浙大版《C语言程序设计(第3版)》题目集
习题10-6 递归求Fabonacci数列 (10 分)
本题要求实现求Fabonacci数列项的函数。Fabonacci数列的定义如下:
f
(
n
)
=
f
(
n
−
2
)
+
f
(
n
−
1
)
(
n
≥
2
)
f(n)=f(n−2)+f(n−1) (n≥2)
f(n)=f(n−2)+f(n−1)(n≥2)其中
f
(
0
)
=
0
f(0)=0
f(0)=0,
f
(
1
)
=
1
f(1)=1
f(1)=1。
函数接口定义:
int f( int n );
函数f
应返回第n
个Fabonacci
数。题目保证输入输出在长整型范围内。建议用递归实现。
裁判测试程序样例:
#include <stdio.h>
int f( int n );
int main()
{
int n;
scanf("%d", &n);
printf("%d\n", f(n));
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例1:
6
输出样例1:
8
二、题解
c代码
int f( int n ) {
long long ans;
if(n == 0) ans = 0;
else if(n == 1) ans = 1;
else ans = f(n - 1) + f(n - 2);
return ans;
}