对于任意一个正整数n,总是可以找出正整数看k1、k2…,使得这些数想加刚好等于n,而且每个数都不超过指定数m。
问:对于给定的n,请找出共有多少中这样的求和式
注意;
设a,b不相等,则认为a+b与b+a是不同的求和式;
n=n也是一种求和式
例如:
n=4,m=2。
4=1+1+1+1
4=1+1+2
4=1+2+1
4=2+1+1
4=2+2

C语言初学者的疑惑,不会,要求用递归
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 五一编程 2021-12-17 16:53关注
#include <stdio.h> int cnt=0; void comb(int a[],int m,int k,int s) { int i,j,t; for(i=m;i>=k;i--) { a[k]=i; if(k>1) comb(a,i-1,k-1,s); else { for(t=0,j=a[0];j>0;j--) t=t+a[j]; if(t==s) { cnt++; printf("%d=", s); for(j=a[0];j>1;j--) printf("%d+", a[j]); printf("%d\n", a[1]); } } } } int main() { int a[100],s,m,i; while (1) { scanf("%d %d", &s, &m); if (s == 0) { break; } cnt=0; for (i=1;i<=m;i++) { a[0]=i; comb(a,m,i,s); } printf("%d\n", cnt); } return 0; }
运行结果:
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录