回 帖 发 新 帖 刷新版面

主题:[讨论]这个怎么做,高手进来看看

设m.n均为自然数,m可表示为一些不超过n的自然数之和,f(m,n)为这种表示方式的数目。例f(5,3)=5,有5种表示方式:3+2,3+1+1,2+2+1,2+1+1+1,1+1+1+1+1。
①以下是该函数的程序段,请将未完成的部分填入,使之完整
int f(m,n)
   int m,n;
{ if(m==1)
        return  (1)   ;
if(n==1){
        return  (2)   ;}
if(m<n) 
{return f(m,m);}
if (m==n)
 {return 1+ (3)   ;}
return f(m.n-1)+f(m-n, (4)   );
}
②执行程序,f(6,4)=       。

回复列表 (共1个回复)

沙发

程序如下:
[code=c]int f(int m,int n)   

    if(m==1)
        return  1   ;
    if(n==1)
        return  1   ;
    if(m<n)
        return f(m,m);
    if (m==n)
        return 1+ f(m-1,n);
    return f(m,n-1)+f(m-n,n);
}[/code]
运行结果:f(6,4)=9;

我来回复

您尚未登录,请登录后再回复。点此登录或注册