<pre name="code" class="cpp">//@auther Yang Zongjun
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <string>
using namespace std;
#define PI acos(-1.0)
#define EPS 1e-8
const int MAXN = 11000;
const int INF = 2100000000;
int f[MAXN], a[MAXN];
//阶乘
int fact(int n)
{
return n == 0 ? 1 : n * fact(n - 1);
}
//斐波那契未优化
int fib(int n)
{
if(n <= 1) return n;
else return fib(n - 1) + fib(n - 2);
}
//优化斐波那契数列
int fibonacci(int n)
{
if(n <= 1) return n;
if(f[n] != 0) return f[n];
else return f[n] = fib(n - 1) + fib(n -2);
}
//优化斐波那契数列方法2
int fib2(int n)
{
a[0] = a[1] = 1;
for(int i = 2; i <= n; i++)
{
a[i] = a[i - 1] + a[i - 2];
}
return a[n];
}
int main()
{
//freopen("C:/Users/Administrator/Desktop/input.txt", "r", stdin);
int n;
while(cin >> n)
{
cout << "fact " << "fib " << "fibonacci " << "fibonacci 2"<< endl;
cout << fact(n) << " " << fib(n) << " " << fibonacci(n) << " " << fib2(n) << endl;
}
return 0;
}
递归函数最简单:阶乘,斐波那契数列及其优化
最新推荐文章于 2024-01-27 21:35:17 发布