递归思想题目(求1-100的和、求阶乘、求前n项阶乘的和、求菲波拉契数)

1、求1-100的和

f(1)=1

f(2)=2+1=2+f(1)

f(3)=3+2+1=3+f(2)

f(4)=4+3+2+1=4+f(3)

...

f(100)=100+99+...1=100+f(99)

f(x)=x+(x-1)...+1

#include<stdio.h>
int work(int i)
{
    if(i==1)
    {
        return 1;
    }
    return i+work(i-1);
}
void main()
{
    printf("%d\n",work(100));
}

2、求5的阶乘

#include<stdio.h>
int work2(int i)
{
    if(i==1)
    {
        return 1;
    }
    return i*work2(i-1);
}
void main()
{
    printf("%d\n",work2(5));
}

3、求前n项的阶乘和

#include<stdio.h>
int work3(int i)
{
    if(i==1)
    {
        return 1;
    }
    return work2(i)+work3(i-1);
}
void main()
{
    printf("%d\n",work3(3));
}

4、递归打印菲波拉契数

菲波拉契数,指的是这样一个数列:1、1、2、3、5、8、13、21、……在数学上,斐波那契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=Fn-1+Fn-2(n>=2,n∈N*),用文字来说,就是斐波那契数列由 0 和 1 开始,之后的斐波那契数列系数就由之前的两数相加。

#include<stdio.h>
int work4(int i)
{
    if(i==1)
    {
        return 0;
    }
    if(i==2)
    {
        return 1;
    }
    return work4(i-1)+work4(i-2);
}
void main()
{
    printf("%d\n",work4);
}

猜你喜欢

转载自blog.csdn.net/weixin_42581477/article/details/81106943