#include <stdio.h>
int f(int n)
{
if(n <= 1)
return 1;
if(n%2 == 0)
return f(n/2);
return f((n-1)/2) + f((n-1)/2+1);
}
/*To test above function */
int main()
{
int a = 11;
printf("%d", f(11));
getchar();
return 0;
}
答案 0 :(得分:1)
为什么不在调试器中跟踪它,看看出了什么问题?
答案 1 :(得分:1)
此代码编译并运行对我来说很好。结果是5.您是否尝试过explicit
关键字来查看它是否是一个优化缺陷?编辑:如果问题是getchar()
,问题可能是运行时的操作系统或编译时的库。这是一个干净的编译?你使用什么编译器?
答案 2 :(得分:0)
这个程序没有任何问题,它没有给我任何类型的无限循环或seg错误(因为你有&lt; = 1条件,程序肯定不会崩溃)。 有些东西告诉我你的机器出于某种原因出现故障......可能是内存不足或者是程序混乱?甚至编译器吓坏了? (那个已经发生在我身上)。如果可能的话,尝试在其他机器上运行代码,并查明它是否仍然给你带来了段错误