【发布时间】:2022-01-12 14:46:58
【问题描述】:
我编写了以下代码,以便使用递归函数查找数字是偶数还是奇数。
#include <stdio.h>
#include <stdlib.h>
int posneg(int n){
if (posneg(n-1)%2 == 0){
return 1;
}
else {
return 0;
}
}
main () {
int num;
do{
printf("Provide a number");
scanf("%d",&num);
} while (num <= 0);
if (posneg(num) == 1)
printf("The number is even");
else
printf("The number is odd");
}
代码编译成功,但出现分段错误。
任何想法是什么原因?
【问题讨论】:
-
你的 posneg 函数的递归什么时候停止?
-
"posneg" 是偶数还是奇数?令人着迷。
-
当数字是奇数或偶数时
-
整数总是奇数或偶数,所以你是说posneg函数永远不会递归?
-
尝试手动跟踪逻辑。你会看到它永远不会停止。您需要在递归调用之前测试
n。
标签: c recursion segmentation-fault