题目
问题A: 分治策略-Fib数列
用递归函数实现输出Fibonacci数列第n项,已知第1项和第2项的值为1,第i(i>2)项的值等于前2项之和。
要求:
第1行输入一个整数,表示n 第2行输出一个整数,表示Fibonacci数列第n项
输入
8
输出
21
样例输入
2
样例输出
1
提示
#include <stdio.h>
double f(int n) {
}
int main(void) {
int n;
double result;
scanf("%d",&n);
result=f(n);
printf("%.0f\n",result);
return 0;
}
提示:分别应用递归和递推两种不同的方法实现,并测试当n=50时,哪种算法的执行时间更长。
题解
#include<stdio.h>
double f(int n) {
if(n==1||n==2)return 1;
else return f(n-1)+f(n-2);
}
int main(void) {
int n;
double result;
scanf("%d",&n);
result=f(n);
printf("%.0f\n",result);
return 0;
}