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

时间:2019-03-18 17:02:02

标签: c

[在此处输入图像说明] [1] [此处,当我在if(series==0) return 0;之前使用Fibonacci定义函数中的if(series==1) return 1;时,斐波那契数列成功打印,但是当我删除此行然后编译程序时将词条输入inout,然后显示类似

的错误消息
  

Fibonacci.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));

}

2 个答案:

答案 0 :(得分:1)

if (series==1) return 1;

这样的问题是,您还用series-2调用了该函数,因此该函数可以小于一个。替换为:

if (series<=1) return 1;

另请参阅“防御性编程”

答案 1 :(得分:1)

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

示例:fibonacci(3)==> fibonacci(1)+ fibonacci(2)
              fibonacci(2)==> fibonacci(1)+ fibonacci(0)

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