请编写递归函数,求菲波那切(Fibonacci)数列某一项的值。
0, 1, 1, 2, 3, 5, 8, 13
, 21, 34, 55, 89, 144, ...
函数原型
double Fib(int index);
说明:参数 index
为数列项的索引号,从 0 开始计数。函数值为 Fibonacci 数列第 index
项的值。若 index
值无效,则函数值为 0。
裁判程序
#include <stdio.h>
double Fib(int index);
int main()
{
int n;
scanf("%d", &n);
printf("%g\n", Fib(n));
return 0;
}
/* 你提交的代码将被嵌在这里 */
这题讨厌的地方就在他非要你用递归实现,尽管效率低。
一下是我的做法:
double Fib(int index){
return index<0?0:!index?0:index==1?1:Fib(index-1)+Fib(index-2);
}
按照题目要求排除无效输入情况(<0时),设置好递归结束条件(输入等于0和1时候)就ok了