这个程序显示分段错误,我认为无限递归发生。你能建议我修正

时间:2011-01-08 17:44:05

标签: c recursion

#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;
}

3 个答案:

答案 0 :(得分:1)

为什么不在调试器中跟踪它,看看出了什么问题?

答案 1 :(得分:1)

此代码编译并运行对我来说很好。结果是5.您是否尝试过explicit关键字来查看它是否是一个优化缺陷?编辑:如果问题是getchar(),问题可能是运行时的操作系统或编译时的库。这是一个干净的编译?你使用什么编译器?

答案 2 :(得分:0)

这个程序没有任何问题,它没有给我任何类型的无限循环或seg错误(因为你有&lt; = 1条件,程序肯定不会崩溃)。 有些东西告诉我你的机器出于某种原因出现故障......可能是内存不足或者是程序混乱?甚至编译器吓坏了? (那个已经发生在我身上)。如果可能的话,尝试在其他机器上运行代码,并查明它是否仍然给你带来了段错误