由于重复递归超出堆栈限制
Stack limit exceeded due to repeated recursion
此代码是使用递归打印斐波那契数列。所以我想设计一个递归而不是使用迭代,但是只要我执行代码并且一旦执行值提供程序函数,它就会显示一些错误 "segmentation error"。我只想这样做......有人可以帮忙吗?我只是一个初学者所以请帮助和鼓励我...
#include<stdio.h>
int fibonacci(int n)
{
int res;
if(n==0)
return 0;
if(n==1)
return 1;
else
res = fibonacci(n-1)+fibonacci(n-2);
return res;
}
int value_provider(int n)
{
int choice1;
if(n>=0)
{
choice1 = fibonacci(n-1);
n -- ;
}
printf("%d",choice1);
if(n>=0)
{
value_provider(n);
}
}
void main()
{
int n;
printf("enter the number");
scanf("%d",&n);
value_provider(n);
}
此代码显示分段错误...
我该怎么做才能删除它而不是更改代码?
我只想这样做;请帮助!
我认为您的 value_provider
函数终止条件不佳。
不要尝试计算 -1
的斐波那契,所以 n 必须是 >=1
另外,一旦 n
为零,您需要完成递归,不要
再次呼叫 value_provider
。
试试这样的东西;
int value_provider(int n)
{
int choice1=-1;
if(n>=1)
{
choice1 = fibonacci(n-1);
n -- ;
}
printf("%d ",choice1);
if(n>0)
{
value_provider(n);
}
}
此代码是使用递归打印斐波那契数列。所以我想设计一个递归而不是使用迭代,但是只要我执行代码并且一旦执行值提供程序函数,它就会显示一些错误 "segmentation error"。我只想这样做......有人可以帮忙吗?我只是一个初学者所以请帮助和鼓励我...
#include<stdio.h>
int fibonacci(int n)
{
int res;
if(n==0)
return 0;
if(n==1)
return 1;
else
res = fibonacci(n-1)+fibonacci(n-2);
return res;
}
int value_provider(int n)
{
int choice1;
if(n>=0)
{
choice1 = fibonacci(n-1);
n -- ;
}
printf("%d",choice1);
if(n>=0)
{
value_provider(n);
}
}
void main()
{
int n;
printf("enter the number");
scanf("%d",&n);
value_provider(n);
}
此代码显示分段错误... 我该怎么做才能删除它而不是更改代码? 我只想这样做;请帮助!
我认为您的 value_provider
函数终止条件不佳。
不要尝试计算
-1
的斐波那契,所以 n 必须是>=1
另外,一旦
n
为零,您需要完成递归,不要 再次呼叫value_provider
。
试试这样的东西;
int value_provider(int n)
{
int choice1=-1;
if(n>=1)
{
choice1 = fibonacci(n-1);
n -- ;
}
printf("%d ",choice1);
if(n>0)
{
value_provider(n);
}
}