【发布时间】:2020-06-27 10:01:03
【问题描述】:
我刚刚编写了这个函数来打印一个列表,其中包含a 和b 之间的数字。
void list(int a, int b){
if(a == b){
printf("%d", a);
}else{
if(a < b){
printf("%d ", a);
printf("%d ", b);
list(a + 1, b - 1);
}
if(b < a){
printf("%d ", a);
printf("%d ", b);
list(a - 1, b + 1);
}
}
}
当我从main 调用该函数时,它仅在数字数量为奇数时起作用。例如:
int main(){
list(2, 8);
return 0;
}
它工作正常并打印:2 8 3 7 4 6 5。但在这种情况下:
int main(){
list(2, 7);
return 0;
}
它永远打印2 7 3 6 4 5 5 4 4 5 5 4 4 5 5 4 4 5 5 4 4...。
函数有什么问题??
【问题讨论】:
-
应该很明显,如果两个数字都是奇数,或者都是偶数,它们将变得相等,但如果一个是奇数,另一个是偶数,它们将相互传递而不相等。例如,如果它们是
4和5,那么它们将变为5和4。