【C/C++基础知识点】输出n位斐波那契数列

本文介绍了斐波那契数列的概念,通过兔子繁殖的故事解释了其规律,并探讨了数列的编程实现。同时,文章提供了几个C/C++编程中的小知识点供读者思考和实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

前言

在软件行业已经有快十年,技术虽然一般般,但是足够应付额解决编程入门的相关问题!
都说十年磨一剑,积累到一定经验,是时候发挥自己的价值,给予入门的同行些许的帮助!
为什么要写收费专栏,其实原因很简单,时间就是金钱(qiong),写博客是需要花很多精力和时间,也算是一种劳动付出!
让编程入门变得更简单,让解题思路有更好的方法!

什么是斐波那契数列

这个数列从第3项开始,每一项都等于前两项之和
1)英文名,Fibonacci sequence
2)黄金分割数列、兔子数列
3)表达式,F[n]=F[n-1]+F[n-2] (n>=2,F[0]=0,F[1]=1)

兔子的故事

数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子,推断出数列规律,如下分析
假设兔子永生,一对兔子每个月能生出一对小兔子,小兔子出生两个月后有繁殖能力。

第一对兔子A:初始状态就是,1对

第一个月:A对兔子生一对小兔子B,此时兔子对数=1+1=2
说明:B对兔子出生第一个月没有繁殖能力

第二个月:A对兔子生一对小兔子C,此时兔子对量=2+1=3
说明:
1)C对兔子出生第一个月没有繁殖能力
2)B对兔子出生第二个月还没有繁殖能力

第三个月:A对兔子生一对小兔子D,B对兔子生一对小兔子B1,此时兔子对量=3+1+1=5
说明:
1)D对兔子出生第一个月没有繁殖能力
2)C对兔子出生第二个月还没有繁殖能力
3)B对兔子出生第三个月已经有繁殖能力
4)B1对兔子出生第一个月还没有繁殖能力

第四个月:A对兔子生一对小兔子E,B对兔子生一对小兔子B2,C对兔子生一对小兔子C1,此时兔子对量=5+1+1+1=8
说明:
1)E对兔子出生第一个月没有繁殖能力
2)D对兔子出生第二个月还没有繁殖能力
3)C对兔子出生第三个月已经有繁殖能力
4)C1对兔子出生第一个月还没有有繁殖能力
5)B1对兔子出生第二个月还没有繁殖能力

第五个月:
1)A对兔子生一对小兔子F
2)B对兔子生一对小兔子B3
3)B1对兔子生一对小兔子B11
4)C对兔子生一对小兔子C2
5)D对兔子生一对小兔子D1
此时兔子对量=8+1+1+1+1+1=13
说明:
1)F对兔子出生第一个月没有繁殖能力
2)E对兔子出生第二个月还没有繁殖能力
3)D对兔子出生第三个月已经有繁殖能力
4)C1对兔子出生第一个月还没有有繁殖能力
5)B1对兔子出生第二个月还没有繁殖能力

假设第一兔子也是从幼仔开始,依次类推可以列出下表:

经过月数01234567891011
幼仔对数1011235813213455
成兔对数01123581321345589
总体对数1123581321345589144

🏆🏆 原则:Write Less Do More!
📋📋 简介:一只喜欢全栈方向的程序员,专注基础和实战分享,欢迎咨询,尽绵薄之力答疑解惑!

#include <stdio.h>
#include <stdlib.h>

int main()
{
	// 值必须大于等于2
	int n;
	bool is_valid = false;
	while (!is_valid)
	{
		printf("请输入一个大于等于2的整数:");	// 属于这个库:stdio.h
		scanf_s("%d", &n);	// scanf()和scan_f的区别!

		if (n < 2) {
			is_valid = false;	// 无效输入值
		}
		else {
			is_valid = true;	// 有效输入值
		}
	}

	// 初始值
	int x1, x2, x;
	x1 = x2 = 1;

	// 显示输出前两项
	printf("%5d%5d", x1, x2);	// 属于这个库:stdio.h

	// 遍历输出n-2项,每输出5项即换行
	int count = 2;
	for (int i = 1; i <= n - 2; i++) {
		x = x1 + x2;
		printf("%5d", x);
		count++;
		// 每输出5项即换行
		if (count % 5 == 0)	printf("\n");
		x1 = x2;
		x2 = x;
	}

	system("Pause");	// 属于这个库下的函数:stdlib.h
	return 0;
}

小知识点

留几点小知识给你们思考和编码尝试体验
1)scan和scan_f的区别
2)%d代表什么意思
3)%5d又代表什么意思
4)system(“Pause”),有什么作用
5)printf,为什么可以设置多个逗号
6)取模符号%是什么意思
7)stdio.h和stdlib.h有什么区别

收尾

既然订阅了,总要收货点什么,尽我10年开发经验,只要在我认知范围内都会给到详细的简答,写博客不容易,望理解和支持!

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

全栈小5

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值