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.每次递归调用之后越来越接近这个限制条件。参考链接