此代码用于使用递归打印Fibonacci系列。因此,我想设计一种递归而不是使用迭代,但是,只要我执行代码,并且一旦执行值提供程序功能,就会显示一些错误“细分错误”。我只想以这种方式做...有人可以帮忙吗?我只是一个初学者,所以请帮助并鼓励我...
#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);
}
此代码显示细分错误... 我该怎么做才能将其删除而不是更改代码? 我只想这样请帮忙!
答案 0 :(得分:0)
我认为您的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);
}
}