求斐波那契数列第20项。
要求第20项,就要求第19项和第18项,要求第19项,就要求第18项和第17项,所以该问题可以使用递归方法解决。
可以这样分解:
fib(20) = fib(19) + fin(18);
fib(19) = fib(18) + fin(17);
...
fib(3) = fib(2) + fin(1);
fib(2) = 1; fib(1) = 1;
代码实现
#include<iostream>
#include<math.h>
using namespace std;
int fun(int n)//定义fun函数
{
int z;
if (n > 2)
{
z = fun(n - 1) + fun(n - 2);//直接调用本身,由fun(n)转换为fun(n-1)+fun(n-2)
}
else
z = 1;//n=2时退出返回到main函数
return z;
}
int main()
{
int i = 20;
int k = 1;
k = fun(i);//调用fun函数,并把结果赋给k
cout << "第20项:" << k << endl;//输出k的值
return 0;
}
运行结果
