斐波拉契数列
Posted lllyclh
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了斐波拉契数列相关的知识,希望对你有一定的参考价值。
古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
先写出来前几个月的兔子数,分别是1、1、2、3、5、8、13、21、34......
就是这样一组数列,第三个数是前两个数的和,也就是n=(n-1)+(n-2)
#include<iostream> using namespace std; int main() int m[23];//定义一个数组,把每个月兔子数放入 m[0] = m[1] = 1;//第一个月和第二个月都是一只兔子 for (int i = 0; i < 23; i++) if (i == 0 || i == 1) cout << "1" << endl;//第一个月和第二个月输出1 else m[i] = m[i - 1] + m[i - 2]; cout << m[i] << endl;//其他月份都是上两个月的和 return 0;
或者用另一种方法
#include<iostream> using namespace std; int fun(int m) if (m == 1 || m == 2) return 1; else return fun(m - 1) + fun(m - 2); int main() return 0;
迭代
假如输入一个数n
fun(n)=fun(n-1)+fun(n-2)
fun(n-1)=fun(n-3)+fun(n-2)
fun(n-2)=fun(n-3)+fun(n-4)
.........
一直会到fun(3)=fun(1)+fun(2)=2
但是这个只能输出特定月份的兔子数
斐波拉契数列的代码书写和分析
什么是斐波拉契数列?
斐波拉契数列是指一个数列,其前两位等于1,第i位等于第i+1位于第i+2位相加。(1 1 2 3 5 8 13 ···)
斐波拉契数列实现代码的分析。
用户输入一个长度值,然后得到该长度的斐波拉契数列。要想实现这个功能,我们可以分成三个模块去书写代码:
1.获取用户输入的长度,保存到变量n中。
2.创建长度为n的数组,依次保存每一位数字。
3.遍历输出数组内容。
这样的话,我们只需要实现每个模块的功能,整个代码就能编写完成。
代码的编写
//模块1 Console.Write("请输入一个斐波拉契数列的长度:"); int n = int.Parse(Console.ReadLine()); //模块2、3 int[] numbers = new int[n]; for (int i = 0; i < numbers.Length; i++) { if (i <= 1) { numbers[i] = 1; } else { numbers[i] = numbers[i - 1] + numbers[i - 2]; } Console.Write(numbers[i] + " "); } Console.ReadLine();
以上是关于斐波拉契数列的主要内容,如果未能解决你的问题,请参考以下文章