前言
在软件行业已经有快十年,技术虽然一般般,但是足够应付额解决编程入门的相关问题!
都说十年磨一剑,积累到一定经验,是时候发挥自己的价值,给予入门的同行些许的帮助!
为什么要写收费专栏,其实原因很简单,时间就是金钱(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对兔子出生第二个月还没有繁殖能力
假设第一兔子也是从幼仔开始,依次类推可以列出下表:
经过月数 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | … |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
幼仔对数 | 1 | 0 | 1 | 1 | 2 | 3 | 5 | 8 | 13 | 21 | 34 | 55 | … |
成兔对数 | 0 | 1 | 1 | 2 | 3 | 5 | 8 | 13 | 21 | 34 | 55 | 89 | … |
总体对数 | 1 | 1 | 2 | 3 | 5 | 8 | 13 | 21 | 34 | 55 | 89 | 144 | … |
🏆🏆 原则: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年开发经验,只要在我认知范围内都会给到详细的简答,写博客不容易,望理解和支持!