18、編寫一個函數,確定一個正數是否爲完全數(一個數,等於除他自身以外的所有因子之和)。用這個函數確定和打印1到1000之間的所有完全數。
//編寫一個函數,確定一個正數是否爲完全數(一個數,等於他的因子之和)。
//用這個函數確定和打印1到1000之間的所有完全數。
#include<iostream>
#include<stdlib.h>
using namespace std;
int getFullnumber()
{
int sum=0;
for(int i=6; i<1000; i++)
{
for(int j=1; j<(i/2+1); j++)
{
if(i%j == 0)
{
sum += j;
//cout << j << " ";
}
}
if(sum == i)
{
cout << i << endl;
//sum = 0;//sum放在這裏只有完全數纔會歸0,故錯誤
}
sum = 0;
}
return 0;
}
int main()
{
getFullnumber();
system("pause");
return 0;
}
19、寫一函數,求斐波那契數列的第n項
//寫一函數,求斐波那契數列的第n項
#include<iostream>
#include<stdlib.h>
using namespace std;
int fibonacci(int n)
{
//int f1, f2 , fn;
if(n == 1 || n==2) return 1;
//else if(n == 2) f2 = 1;
else
{
return fibonacci(n-1) + fibonacci(n-2);
}
//return fn;
}
int main()
{
int n;
cin >> n;
cout << fibonacci(n) << endl;
system("pause");
return 0;
}
題目來源:50道C++編程練習題及解答
總結
1、判斷一個數是否爲另一個數的因子可用求餘(%)判斷餘數是否爲0,if(i%j == 0);
2、遞歸的兩個必要條件:a.存在限制條件,當滿足這個條件時,遞歸便不再繼續。
b.每次遞歸調用之後越來越接近這個限制條件。參考鏈接