#include<stdio.h>

//首先是递归算法
int Fib(int x) {
    if (x <= 2) {//当x小于等于2时,返回1
        return 1;
    }
    else {
        return Fib(x - 1) + Fib(x - 2);//斐波那契数列就是前两个相加之和
    }
}
//非递归算法
int fib(int x) {
    int i = 1;
    int a = 1;
    int b = 1;
    while (x > 2) {
        i = a + b;//i=结果
        b = a;//用b代替a
        a = i;//用a代替i    相当于三者依次向前推进
        x--;
    }
    return i;
}
//效率很高
int main() {
    int num = 0;
    printf("请输入想要查询的第几位数字:");
    scanf_s("%d", &num);

    printf("%d\n", Fib(num));
    printf("%d", fib(num));
    return 0;
}

斐波那契数列:递归+非递归

(递归/非递归)斐波那契数列_非递归算法