递归--斐波那契数列

#include <stdio.h>
//斐波那契数列的非递归实现
int f(int n)
{
    int a,b,sum;
    sum=0;
    a=1;b=1;
    if (n==1||n==2)
        return 1;
    for (int i = 2; i < n; ++i) {
        sum=a+b;
        a=b;
        b=sum;
    }
    return sum;
}
//斐波那契数列的递归求解
/*
 * 斐波那契数列解决办法
 *  1.先罗列一些序列,看是不是有规律,
 *  2.如果能把一个大问题分解为一个小问题,则使用递归
 *
 * 递归问题:
 *  1.递归函数定义形式  int f_f(int n)
 *  2.递归条件    if(n>2){递归},if(n==1||n==2) return 1;
 *  3.递推表达式   f(n)=f(n-1)+f(n-2)
 */
int f_f(int n)
{
    if (n==1||n==2)
    {
        return 1;
    }
    return f_f(n-1)+f_f(n-2);
    //把f(n-1)+f(n-2)传入int f_f(int n),就构成了递推表达式,f_f(n)=f_f(n-1)+f_f(n-2)
}
int main()
{
    int n;  //项数

    scanf("%d",&n);
    
    int i=f(n);
    printf("第n项为:%d
",i);
    
    i=f_f(n);
    printf("第n项为:%d
",i);
    return 0;
}
原文地址:https://www.cnblogs.com/nanfengnan/p/14600653.html