本文已参与「新人创作礼」活动,一起开启掘金创作之路。
递归思想,将问题简单化,对于整数n,选取不大于n的数m作为一个因子,然后再数n-m中选取不大于m的数作为因子,一直递归下去。
#include<iostream>
using namespace std;
int sum = 0;
void Find(int n,int m)
{
if(n == 0)//n>=i的n-i会逐渐到达0,这就是临界条件
{
sum +=1;//每找到一个sum加1
return ;
}
for(int i = m; i >= 1; i--)
{
if( n-i >= 0)
{
Find(n-i,i);
}
}
}
int main(){
int n;
while(cin>>n)
{
Find(n,n);
cout<<sum<<endl;
sum=0;//记住出初始化
}
}