这段代码的问题在哪里?

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 共两种

这段代码的问题在哪里?求教

暮月0
浏览 1246回答 0
0回答
打开App,查看更多内容
随时随地看视频慕课网APP