#include
int fib(int x) {
if (x == 1) {
return 1;
} else if (x == 0) {
return 0;
} else {
return fib(x-1)+fib(x-2);
}
}
int main() {
printf("%d\n", fib(20);
}
//打印了前20项
int Fibonacci(int cnt)
{
if(cnt<= 0) //参数非法的话,直接退出程序
{
exit(1);
}
if((cnt == 1) || (cnt == 2)) //第一和第二项是1
{
return 1;
}
return Fibonacci(cnt - 1) + Fibonacci(cnt - 2); //第N项是第N-1项和第N-2项的和
}
void main()
{
int i;
for(i = 1; i <= 20; i++)
{
printf("%d ", Fibonacci(i));
}
return;
}
递归效率很低,如果不是考试或作业的话,建议用动态规划。