【斐波那契数列】如何优雅地求第n项的斐波那契数

各位友友们,不妨动动小手点点赞,一定会很感激你们的~

一、斐波那契数列是什么?

示例诸如一段数列 1 1 2 3 5 8 13……,第三位开始每一位的数都是前两位数之和,2=1+1;3=2+1;5=3+2等等。

二、编写程序

1.引入代码

#include <stdio.h>//编写函数,输入n,fib函数输出第n项斐波那契。1 1 2 3 5 8 13 21…… 
int fib( int n );
int main()
{
    int n;
    printf("请输入斐波那契数列的项数:"); 
   scanf("%d", &n);
    printf("第n项斐波那契数:%d\n", fib(n));
    return 0;
}
int fib(int n) 
{   int i;
	int x=1,y=1,z;
	if(n<=2)
	return 1;// 
	for(i=2;i<n;i++)//循环次数为n-2; 
	{
	z=x+y;x=y;y=z;}//不可调换顺序,数列从右往左推进 
	return z;
}

2.输入数值


7

3.输出数值

13

第二种方法,运用整型变量来存放数值。

二.编写代码

#include <stdio.h>//编写函数,输入n,fib函数输出第n项斐波那契。1 1 2 3 5 8 13 21…… 
int fib( int n );
int main()
{
    int n;
    printf("请输入斐波那契数列的项数:"); 
   scanf("%d", &n);
    printf("第n项斐波那契数:%d\n", fib(n));
    return 0;
}
int fib(int n)
{
	int s[n];//用n做序号,则数组长度随之更改 
	s[1]=s[0]=1;
	int i;
	if(n<=2)
		return 1;
	for(i=2;i<n;i++)//循环次数为n-2 
	{
		s[i]=s[i-1]+s[i-2];}
		if(n>2)
		return s[i-1];//因为i++,所以返回序号减一 
 } 

总结

只要巧妙地利用for循环辅助储存数值,再根据if语句对所输入的数值进行判断,最后再返回对应数值即可
【问题描述】 【问题描述】编写函数f,功能是用递归的方法求斐波那契数列的第n,函数原型为 int f(int n),在主函数中输入一个正整数n,调用函数f求出斐波那契数列的第n,并在主函数中输出斐波那契数列:1,1,2,3,5,8,13,21…… 【输入形式】3 【输出形式】2 【样例输入】6 【样例输出】8 【问题描述】编写函数f,功能是用递归的方法求斐波那契数列的第n,函数原型为 int f(int n),在主函数中输入一个正整数n,调用函数f求出斐波那契数列的第n,并在主函数中输出斐波那契数列:1,1,2,3,5,8,13,21…… 【输入形式】3 【输出形式】2 【样例输入】6 【样例输出】8 【问题描述】编写函数f,功能是用递归的方法求斐波那契数列的第n,函数原型为 int f(int n),在主函数中输入一个正整数n,调用函数f求出斐波那契数列的第n,并在主函数中输出斐波那契数列:1,1,2,3,5,8,13,21…… 【输入形式】3 【输出形式】2 【样例输入】6 【样例输出】8 【问题描述】编写函数f,功能是用递归的方法求斐波那契数列的第n,函数原型为 int f(int n),在主函数中输入一个正整数n,调用函数f求出斐波那契数列的第n,并在主函数中输出斐波那契数列:1,1,2,3,5,8,13,21…… 【输入形式】3 【输出形式】2 【样例输入】6 【样例输出】8 斐波那契数列:1,1,2,3,5,8,13,21…… 【输入形式】3 【输出形式】2 【样例输入】6 【样例输出】8
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落花浅醉

您的打赏将会是我的永动机

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值