信息学奥赛一本通1159:斐波那契数列

本文介绍了如何使用递归函数解决信息学奥赛一本通中的1159题——斐波那契数列。详细解释了递归函数的设计思路,包括定义函数、设置递归出口和操作,并给出了完整的C++代码实现。
部署运行你感兴趣的模型镜像

【题目描述】

用递归函数输出斐波那契数列第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;
}

 

您可能感兴趣的与本文相关的镜像

EmotiVoice

EmotiVoice

AI应用

EmotiVoice是由网易有道AI算法团队开源的一块国产TTS语音合成引擎,支持中英文双语,包含2000多种不同的音色,以及特色的情感合成功能,支持合成包含快乐、兴奋、悲伤、愤怒等广泛情感的语音。

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值