问题描述:
编写一个递归函数,要求给定一个正整数 n,输出和为 n 的所有不增的正整数和式。
例如 n=5,则输出的和式结果如下:
5=5
5=4+1
5=3+2
5=3+1+1
5=2+2+1
5=2+1+1+1
5=1+1+1+1+1
输入:一行,n。
输出:和为 n 的所有不增的正整数和式。
【输入&输出样例】:见上。
#include <iostream>
#include <algorithm>
using namespace std;
int rst[1001];
int m;
void f(int n,int pre,int k){
if(n<=0){
if(m!=0&&n==0){
cout<<m<<"="<<rst[0];
for(int i=1;i<k;i++){
cout<<"+"<<rst[i];
}cout<<endl;
}return;
}
for(int i=pre;i>0;i--){
rst[k]=i;
f(n-i,i,k+1);
rst[k]=0;
}
}
int main() {
cin>>m;
f(m,m,0);
return 0;
}