斐波那契数列有一些运行时错误

  • 本文关键字:运行时错误 数列 c
  • 更新时间 :
  • 英文 :


[在此处输入图像描述][1][当我在斐波那契定义函数中获取if(series==0) return 0;之前if(series==1) return 1;斐波那契数列成功打印,但是当我删除此行然后编译我的程序时,它需要术语输入,然后显示错误消息,例如

斐波那契.exe已停止工作,但是当我添加该行程序时,成功执行。 这是怎么回事。 有人会告诉我 ][2] 这是我的代码:

#include<stdio.h>
int fibonacci(int);  // declaration of fibonacci function.
int main(){
int input_num,i,series=1;
printf("Enter the term you want to print fibonacci series : ");
scanf("%d", &input_num);
printf("n Fibonacci Series Are : ");
for(i=0; i<input_num; i++){
printf("%d,", fibonacci(series));
series++;
}
return 0;
}
//defination of fibonacci function
int fibonacci(int series){

if(series==1) return 1;
return(fibonacci(series-1)+fibonacci(series-2));
}
if (series==1) return 1;

这有一个问题,即您还使用series-2调用函数,因此它可以小于 1。替换为:

if (series<=1) return 1;

另见"防御性编程">

每个递归函数都需要某种基本条件来收敛。 在斐波那契程序中,该函数被递归调用两次fibonacci(n-1)fibonacci(n-2).这里可能有两种基本情况,这就是为什么您必须同时检查 0 和 1。

示例:斐波那契(3) ==> 斐波那契(1) + 斐波那契(2)
斐波那契(2) ==> 斐波那契(1) + 斐波那契(0)

if(series==0) return 0;
else if(series==1) return 1;
else return(fibonacci(series-1)+fibonacci(series-2));

相关内容

最新更新