首页 > 解决方案 > 斐波那契数列有一些运行时错误

问题描述

[在此处输入图像描述][1][此处当我if(series==0) return 0;在此之前采用斐波那契定义函数,if(series==1) return 1;然后斐波那契数列打印成功,但是当我删除此行然后编译我的程序时,它需要 term 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));

}

标签: c

解决方案


每个递归函数都需要某种基本条件来收敛。在斐波那契程序中,该函数被递归调用两次,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));

推荐阅读