能用C编写一道数据结构的题么?如下。。

设m.n均为自然数,m可表示为一些不超过n的自然数之和,f(m,n)为这种表示方式的数目。例f(5,3)=5,有5种表示方法:1+1+1+1+1;1+1+1+2;1+2+... 设m.n均为自然数,m可表示为一些不超过n的自然数之和,f(m,n)为这种表示方式的数目。例f(5,3)=5,有5种表示方法:1+1+1+1+1;1+1+1+2;1+2+2;1+1+3;3+2.
试编写函数f(m,n)计算这种表示方法的数目。
用C编写哈~
展开
 我来答
shy2850
2009-09-18 · TA获得超过6773个赞
知道大有可为答主
回答量:2505
采纳率:55%
帮助的人:1570万
展开全部
#include<stdio.h>

main(){
int i,m,n;
char c;
for(i=0;;i++){ clrscr();
printf("\n\t input m,n:");
scanf("%d,%d",&m,&n);
printf("\t%d\n\tany other key to contine......('q'for exit)",f(m,n));
c=getch();
if(c=='q')break;
}
getch();
}
int f(int m,int n){
int SUM=0;
if(n==1)SUM=1;
else if(n<1)SUM=0;
else{
if(m<=n){SUM+=1;n=m-1;SUM+=f(m,n);}
else {SUM=f(m-n,n)+f(m,n-1);}/*通篇只有这一个关键步骤:后面是讲解*/
}
return SUM;
}
/*
例如:f(7,2)=4 & f(7,3)=
f(7,2)
1+1+1+1+1+1+1=7
2+1+1+1+1+1=7
2+2+1+1+1=7
2+2+2+1=7

3+ 1+1+1+1 =7
3+ 2+1+1 =7
3+ 2+2 =7
3+ 3+1 =7
f(7,3)=8
注意:两个相差的部分就是在小于3的范围内求4;即:f(7-3,3);
*/
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式