題目:
編寫一個(gè)函數(shù),它返回兩個(gè)long變量中較小值的引用。編寫另一個(gè)函數(shù),它返回較大值的引用。使用這兩個(gè)函數(shù)生成斐波納契級(jí)數(shù)的元素,即1,1,2,3,5,8,13……序列,其中每個(gè)數(shù)都等于前兩個(gè)數(shù)之和,元素的個(gè)數(shù)由用戶指定(提示:把序列中的兩個(gè)數(shù)字存儲(chǔ)在n1和n2中,它們都從1開(kāi)始。如果把兩個(gè)數(shù)的和存儲(chǔ)在較小的變量中,并輸出較大的值,就會(huì)得到希望的結(jié)果。難點(diǎn)是為什么這是可行的)。
答案:
#include <iostream>
#include <iomanip>
using std::cout;
using std::cin;
using std::endl;
long& smaller(long& m, long& n);
long& larger(long& m, long& n);
void main() {
int count = 0;
cout << "How many values in the Fibonacci sequence would you like? ";
cin >> count;
long n1 = 1L; // First in sequence
long n2 = 1L; // Second in sequence
cout << endl
<< std::setw(15) << n1
<< std::setw(15) << n2;
for (int i=2; i<count; i++)
{
if (i%5 == 0)
cout << endl;
smaller(n1, n2) = n1 + n2;
cout << std::setw(15) << larger(n1, n2);
}
cout << endl;
}
long& smaller(long& m, long& n)
{
return m<n?m:n;
}
long& larger(long& m, long& n)
{
return m>n?m:n;
}