斐波那契数列(递归和循环)

题目描述

大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。 n<=39
思路

①递归

②非递归

③打表

代码

#include<stdio.h>
#include<string.h>
//递归,超时
int Fibonacci(int n){
    if(n==1||n==2)
        return 1;
    return Fibonacci(n-1)+Fibonacci(n-2);
}
//非递归
int Fibonacci_2(int n){
    if(n==1||n==2)
        return 1;
    int a=1,b=1;
    int c;
    //定义三个变量,辅助后移即可
    for(int i=3;i<=n;i++){
        c=a+b;
        a=b;
        b=c;
    }
    return c;
}
int a[40]={0,1,1};
//主函数中打表,直接输出
int Fibonacci_3(int n){
    return a[n];
}
int main()
{
    int n;
    scanf("%d",&n);
    for(int i=3;i<40;i++){
        a[i]=a[i-1]+a[i-2];
    }
    printf("%d\n",Fibonacci(n));
    return 0;
}

猜你喜欢

转载自blog.csdn.net/hqh131360239/article/details/80893200