第四周项目5————用递归方法求解

(1)

/*copyright(c)2016.烟台大学计算机学院
 * All rights reserved,
 * 文件名称:text.Cpp
 * 作者:吴敬超
 * 完成日期:2016年3月22日
 * 版本号:vc++6.0
 *
 * 问题描述: 编写递归函数求出n的阶乘
 * 输入描述:  输入n
 * 程序输出: 输出结果
 */
#include<iostream>
using namespace std;
int fac(int n);
int main()
{
    int n,i,sum=1;
    cin>>n;
    for(i=1;i<=n;i++)
    {
        sum=fac(i);
    }
    cout<<sum<<endl;
    return 0;
}
int fac(int n)
{
    if(n==1)
    {
        return 1;
    }
    else
    {
        return n*fac(n-1);
    }
}


运行结果:

第四周项目5————用递归方法求解_第1张图片

(2)

/*copyright(c)2016.烟台大学计算机学院
 * All rights reserved,
 * 文件名称:text.Cpp
 * 作者:吴敬超
 * 完成日期:2016年3月22日
 * 版本号:vc++6.0
 *
 * 问题描述: 编写递归函数求出1*3*5*...*n的阶乘
 * 输入描述:  输入n
 * 程序输出: 输出结果
 */
#include<iostream>
using namespace std;
int fac(int n);
int main()
{
    int n,i=1,sum=1;
    cin>>n;
    while(i<=n)
    {
        sum=fac(i);
        i=i+2;
    }
    cout<<sum<<endl;
    return 0;
}
int fac(int n)
{
    if(n==1)
    {
        return 1;
    }
    else
    {
        return n*fac(n-2);
    }
}


运行结果:

第四周项目5————用递归方法求解_第2张图片

(3)

#include<iostream>
using namespace std;
int gcd(int x,int y);
int main()
{
    int n,m;
    int a,b,g;
    cin>>a>>b;
    g=gcd(a,b);
    cout<<"最大公约数:"<<g;
    return 0;
}
int gcd(int x,int y)
{
    int r;
    r=x%y;
    y=r;
    x=y;
    return x;
}


运行结果:

第四周项目5————用递归方法求解_第3张图片

(4)

/*copyright(c)2016.烟台大学计算机学院
 * All rights reserved,
 * 文件名称:text.Cpp
 * 作者:吴敬超
 * 完成日期:2016年3月22日
 * 版本号:vc++6.0
 *
 * 问题描述: 编造递归函数fib(n)返回第n个斐波那契数,以此输出斐波那契数列的20个数
 * 输入描述:  输入n。
 * 程序输出: 输出第20个数。
 */
#include<iostream>
using namespace std;
int fib(int n);
int main()
{
    int n,sum;
    cin>>n;
    sum=fib(n);
    cout<<sum<<endl;
    return 0;
}
int fib(int n)
{
    if(n==1)
    {
        return 0;
    }
    else if(n==2||n==3)
    {
        return 1;
    }
    else
    {
        return fib(n-1)+fib(n-2);
    }
}


运行结果:

第四周项目5————用递归方法求解_第4张图片

学习心得:

懂得了用递归去解决问题

你可能感兴趣的:(第四周项目5————用递归方法求解)