C++编程基础DAY8

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章