/*
*Copyright (c)2016,烟台大学计算机与控制工程学院
*All rights reserved.
*文件名称:main.cpp
*作 者:郭永恒
*完成日期:2016年3月23日
*版 本 号:v1.0
*
*问题描述:
*(1):编写递归函数求出n的阶乘
*(2):写出1*3*...*n的递归式,编写出递归函数求解
*(3):用递归求两个数的最大公约数
*(4):递归,输出斐波那契数列的低20个数
*/
//问题(1)
#include <iostream>
using namespace std;
int jc(int n)
{
if(n == 1)
return 1;
return n*jc(n-1);
}
int main()
{
int n;
cin >> n;
cout << jc(n) << endl;
return 0;
}
运行结果:
//问题(2)
#include <iostream>
using namespace std;
int f(int n)
{
if(n == 1)
return 1;
return n * f(n-2);
}
int main()
{
int n;
cin >> n;//根据题目,此处的n只能是奇数
cout << f(n) << endl;
return 0;
}
运行结果:
//问题(3)
#include <iostream>
using namespace std;
int f(int m,int n)
{
if(n == 0)
return m;
return f(n,m%n);
}
int main()
{
int m,n;
cin >> m >> n;
cout << f(m,n) << endl;
return 0;
}
运行结果:
//问题(4)
#include <iostream>
using namespace std;
int fib(int n);
int main()
{
cout << fib(20) << endl;
return 0;
}
int fib(int n)
{
if(n == 1 || n == 2)
return 1;
return fib(n-2) + fib(n-1);
}
运行结果: