【题目描述】
用递归函数输出斐波那契数列第n项。0, 1,1,2,3,5,8,13……
【输入】
一个正整数n,表示第n项。
【输出】
第n项是多少。
【输入样例】
3
【输出样例】
1
大家好!
今天我们来看信息学奥赛一本通刷题网站的1159题:斐波那契数列;下面是网站链接:信息学奥赛一本通(C++版)在线评测系统
这道题要求我们输入一个数字,我们就先假设为n, 然后再输出在斐波那契数列中第n项的值 比如输入3输出的就是1 (有一点我需要说一下,就是这道题它的样例是按照以0开头的斐波那契数列来写的,所以我们在编程的时候也要按照样例的格式来写)
首先我们肯定要先定义一个自定义函数,里面有一个参数n,代表了我们要输出斐波那契数列的第几项。因为这道题目是需要用递归来写,所以我下面的代码是写的递归形式。然后呢,递归第一步要分析正常是我们是怎么做的,第二步是设置递归出口的判断条件,第三步是设置出口的操作,表示不再递归了。所以把这套“递归三部曲”套路套到这道题上,自定义函数的部分就出来了。代码如下:
long long f(int n){
if(n==1) return 0;
if(n==2||n==3) return 1;
else
return f(n-1)+f(n-2);
}
自定义函数部分写好了主函数部分也就简单了,声明一个整型的a变量(其他的名字也可,但尽量不要与自定义函数部分的n一样),然后输入a,由于斐波那契数列的自定义函数是有返回值的,所以直接cout<<f(k);即可。代码如下:
int main(){
int k;
cin>>k;
cout<<f(k);
return 0;
}
完整代码如下:
#include<bits/stdc++.h>
using namespace std;
long long f(int n){
if(n==1) return 0;
if(n==2||n==3) return 1;
else
return f(n-1)+f(n-2);
}
int main(){
int k;
cin>>k;
cout<<f(k);
return 0;
}
本文介绍了如何使用递归函数解决信息学奥赛一本通中的1159题——斐波那契数列。详细解释了递归函数的设计思路,包括定义函数、设置递归出口和操作,并给出了完整的C++代码实现。
577

被折叠的 条评论
为什么被折叠?



