using namespace std; int n,s=0;//n为输入值,s为解决方案个数 void search(int i,int j){//i是要搜索的数 j是本次搜索开始最小的值 int left; if(i<=0)return; for(int k=1;k<=i;k++){ if(k<j)return; left=i-k; if(left<0)return; else if(left==0){s+=1;} else {j=k;search(left,j);} } } int main(){ cin >> n; search(n,0); cout << s << endl; system("pause"); }
问题是输入一个大于一的自然数n,输出n可以表示为若干小于n的自然数之和的拆分方法的种数
如3=1+1+1=1+2 共两种
这段代码的问题在哪里?求教
相关分类