#include <stdio.h>
#define LENGTH 16
void makeBranches(int, int);
void display(int, int);
int main(){
makeBranches(0, LENGTH-1);
}
void makeBranches(int left, int right){
if(left >= right){
return;
} else{
display(left, right);
makeBranches(left, (right+left)/2);
makeBranches((right+left/2)+1, right);
}
}
void display(int left, int right){
printf("%d, %d", left, right);
int mid = (left+right)/2;
int i;
for(i = left; i <= right; i++){
if(i == mid)
printf("X");
else
printf("-");
}
if(right == LENGTH-1)
printf("\n");
}
私が抱えている問題は、makeBranchesの2番目の呼び出しが、最初の呼び出しが使用した元の値ではなく、makeBranchesの最初の呼び出しを返す原因となった値でのみ実行されることです。