【MAC 上学习 C++】Day 14-1. 习题6-4 使用函数输出指定范围内的Fibonacci数 (20 分)

习题6-4 使用函数输出指定范围内的Fibonacci数 (20 分)

1. 题目摘自

https://pintia.cn/problem-sets/12/problems/311

2. 题目内容

本题要求实现一个计算 Fibonacci 数的简单函数,并利用其实现另一个函数,输出两正整数 mn (0Fibonacci 数。所谓 Fibonacci 数列就是满足任一项数字是前两项的和(最开始两项均定义为 1)的数列。

函数接口定义:

int fib( int n );
void PrintFN( int m, int n );
其中函数 fib 须返回第 nFibonacci 数;函数 PrintFN 要在一行中输出给定范围[m, n]内的所有 Fibonacci 数,相邻数字间有一个空格,行末不得有多余空格。如果给定区间内没有 Fibonacci 数,则输出一行 No Fibonacci number

输入样例1:

20 100 7

输出样例1:

fib(7) = 13
21 34 55 89

输入样例2:

2000 2500 8

输出样例2:

fib(8) = 21
No Fibonacci number

3. 源码参考
#include

using namespace std;

int fib(int n);
void PrintFN(int m, int n);

int main()
{
    int m, n, t;

    cin >> m >> n >> t;
    cout << "fib(" << t << ") = " << fib(t) << endl;
    PrintFN(m, n);

    return 0;
}

int fib(int n)
{
    if ((n == 1) || (n == 2))
    {
        return 1;
    }
    else
    {
        return fib(n - 1) + fib(n - 2);
    }
}

void PrintFN(int m, int n)
{
    int cnt = 0;

    for (int i = 1; ; i++)
    {
        if (fib(i) > n)
        {
            if (cnt > 0)
            {
                cout << endl;
            }

            break;
        }

        if ((fib(i) >= m) && (fib(i) <= n))
        {
            if (cnt > 0)
            {
                cout << " ";
            }

            cout << fib(i);
            cnt++;
        }
    }

    if (cnt == 0)
    {
        cout << "No Fibonacci number" << endl;
    }

    return;
}

你可能感兴趣的:(【MAC 上学习 C++】Day 14-1. 习题6-4 使用函数输出指定范围内的Fibonacci数 (20 分))