用C语言求解第N项斐波那契数列问题

 更新时间:2022年11月07日 16:54:58   作者:雨落星河:Brack  
这篇文章主要介绍了用C语言求解第N项斐波那契数列问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

求解第N项斐波那契数列

斐波那契数列指的是这样一个数列:1,1,2,3,5,8,13,21,34,55,89...

这个数列从第3项开始,每一项都等于前两项之和。斐波那契数列,又称黄金分割数列,显然它又是一个线性递推数列,由数学家莱昂纳多·斐波纳契首次引入此概念。在现代的物理,化学,生物等诸多领域,皆有重大影响。

在此求解过程中,我用了if 语句和for循环。话不多说,我就直接上代码了。

#include<stdio.h>               //1,1,2,3,5,8,13,21,34
 
int main(void)
{
	int n, i; 
	
	int f1, f2, f3;
	
	f1=1;
	
	f2=1;
	
	printf("请输入您需要求的序列:");
	
	scanf("%d",&n);
	
	if(n==1)
	{
		f3=1;
	}
	
	else if(n==2)
	{
		f3=1;
	}
	
	else
	{
		for(i=3; i<=n; i++)
		{
			f3 = f1 + f2;
			f1 = f2;
			f2 = f3; 
		} 
	}
	
	printf("%d\n",f3);
	
	return 0;
}

求解斐波那契数列的前n项并输出及兔子繁殖问题

斐波那契数列的定义

F1=1
F2=1

Fn=F(n-1)+F(n-2)

从第三项开始每一项的值都等于前一项加上前两项的和。

算法思路

可以使用整型数组来存储每一项的值,前两项不能使用Fn的通项公式,所以得和其他项区别计算,当输入总项数n后,我们定义一个大小为n的整型数组,然后使用一个for循环去计算从1到n的数列值,其中需要嵌套一个switch选择语句用于区别前两项和其他项的计算,switch语句后再加上一个printf输出函数用于输出每一项的数列值。

代码实现

#include<stdio.h>
void main()
{
     int n;
     printf("请输入需求的斐波那契数列总项数:\n");
     scanf("%d",&n);
     system("cls");//清屏输出结果
     int f[n];//定义整型数组来存储每一项数列的值
     for(int i=0;i<n;i++)
     {
	 switch(i)
	 {
     	case 0:
     	    f[i]=1;//第一项值为1
       	    break;
     	case 1:
     		f[i]=1;//第二项值为2
     		break;
     	default:
     		f[i]=f[i-1]+f[i-2];
     		break;
	 }
     
    printf("F%d=%d\n",i+1,f[i]);//因为数组的下标从0开始,数列的下标从1
                               //开始,所以i需要加1.
	 }
}

输出结果:

F1=1
F2=1
F3=2
F4=3
F5=5
F6=8
F7=13
F8=21
F9=34
F10=55
F11=89
F12=144

兔子繁殖问题

(1) 问题描述

兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来。如果所有兔子都不死,那么一年以后可以繁殖多少对兔子?

(2) 问题分析

第一个月只有一对兔子,而且前两个月还没有繁殖能力,所以第一个月和第二个月的兔子对数都为1,分别记为F1=1,F2=1,到了第三个月,第一个月的兔子繁殖出了一对新兔子此时F3=2,第四个月,第一个月的兔子继续繁殖出一对新兔子,而第三个月繁殖出的新兔子还没有繁殖能力,所以F4=3,依次类推,不难发现这是一个斐波那契数列,所以繁殖一年(12个月)后兔子对数为F12=144。注意第十三个月不能算入内。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • C语言数据结构顺序表中的增删改(尾插尾删)教程示例详解

    C语言数据结构顺序表中的增删改(尾插尾删)教程示例详解

    这篇文章主要为大家介绍了C语言数据结构顺序表中的增删改教程示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-02-02
  • 老生常谈C++ explicit关键字

    老生常谈C++ explicit关键字

    这篇文章主要介绍了C++ explicit关键字,explicit关键字只需用于类内的单参数构造函数前面,由于无参数的构造函数和多参数的构造函数总是显式调用,这种情况在构造函数前加explicit无意义,需要的朋友可以参考下
    2023-03-03
  • 深入解析C++中多态性和虚函数使用原理

    深入解析C++中多态性和虚函数使用原理

    这篇文章主要为大家介绍了深入解析C++中多态性和虚函数使用原理,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • Qt之使用GraphicsView框架实现思维导图的示例

    Qt之使用GraphicsView框架实现思维导图的示例

    思维导图可以更方便的整理知识,本文主要介绍了Qt之使用GraphicsView框架实现思维导图的示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • C++模板类的用法

    C++模板类的用法

    这篇文章主要介绍了C++模板类的用法,实例讲述了模板类的概念及相关用法,需要的朋友可以参考下
    2014-10-10
  • C++ qt实现打开关闭状态按钮的代码

    C++ qt实现打开关闭状态按钮的代码

    这篇文章主要介绍了C++ qt实现打开关闭状态按钮,用QCheckBox可以实现,只要在选择与未选择的状态设置不同的图片即可完成,代码简单易懂,需要的朋友可以参考下
    2022-03-03
  • C语言实现字符串字符反向排列的方法详解

    C语言实现字符串字符反向排列的方法详解

    这篇文章主要为大家分享了几种通过C语言实现字符串字符反向排列(不是逆序打印)的方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-05-05
  • C语言实现顺序表基本操作汇总

    C语言实现顺序表基本操作汇总

    这篇文章主要介绍了C语言实现顺序表基本操作汇总,对学习数据结构的朋友有一定的借鉴价值,需要的朋友可以参考下
    2014-07-07
  • opencv实现矩形检测

    opencv实现矩形检测

    这篇文章主要为大家详细介绍了opencv实现矩形检测,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-07-07
  • 详解C++中的自动存储

    详解C++中的自动存储

    这篇文章主要介绍了详解C++中的自动存储,帮助大家更好的理解和学习C++,感兴趣的朋友可以了解下
    2020-09-09

最新评论