C++中使用嵌套循环计算斐波纳契数列

C++中使用嵌套循环计算斐波纳契数列

最先研究这个数列的人是意大利人斐波那契,Leonardo Fibonacci,他在描述兔子生长的数目时用上了这数列:

第一个月初有一对刚诞生的兔子;
第二个月还是只有这一对;
第三个月初它们可以生育;
以后每月每对可生育的兔子会诞生下一对新兔子;
兔子永不死去。
每个月兔子的总对数,就是这样一个序列:

1, 1, 2, 3, 5, 8, 13, 21…

这个序列从第三项开始,每一项都等于前两项之和。

在数学上,斐波那契数列是以递归的方法来定义:

F(1) = 1

F(2) = 1

F(n) = F(n-1) + F(n-2) (n≥3)

如下示例程序演示了如何创建斐波纳契数列:用户想要多长就多长—长度只受限于 int 变量可存储的最大值:

#include 
using namespace std;

int main()
{
    const int numsToCalculate = 5;
    cout << "This program will calculate " << numsToCalculate \
        << " Fibonacci Numbers at a time" << endl;

    int num1 = 0, num2 = 1;
    char wantMore = '\0';
    cout << num1 << " " << num2 << " ";

    do 
    {
        for (int counter = 0; counter < numsToCalculate; ++counter)
        {
            cout << num1 + num2 << " ";

            int num2Temp = num2;
            num2 = num1 + num2;
            num1 = num2Temp;
        }

        cout << endl << "Do you want more numbers (y/n)? ";
        cin >> wantMore;
    }while (wantMore == 'y');

    cout << "Goodbye!" << endl;

    return 0;
}

输出:

This program will calculate 5 Fibonacci Numbers at a time
0 1 1 2 3 5 8
Do you want more numbers (y/n)? y
13 21 34 55 89
Do you want more numbers (y/n)? y
144 233 377 610 987
Do you want more numbers (y/n)? y
1597 2584 4181 6765 10946
Do you want more numbers (y/n)? n
Goodbye!

分析:

第 13 行的外部 do…while 循环基本上是一个询问循环,询问用户是否要生成更多的数字。第 15 行的内部for循环计算并显示接下来的5个斐波纳契数。第19 行将num2的值存储到临时变量num2Temp 中, 以便第 21 行能够使用它。 如果不将 num2 的原始值存储到临时变量中, 第 20 行修改 num2 的值后,就无法将其赋给 num1 了。如果用户按 y 键,将再次执行 do…while 循环,进而再次执行嵌套的 for 循环,从而生成接下来的 5 个斐波纳契数。

该文章会更新,欢迎大家批评指正。

推荐一个零声学院的C++服务器开发课程,个人觉得老师讲得不错,
分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,
fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,
TCP/IP,协程,DPDK等技术内容
点击立即学习:C/C++后台高级服务器课程

你可能感兴趣的:(C++编程基础,c++)