c++之计算组合之调用函数(必使用zh(n,m)版,

img

img


使用了调用函数,并且也用了阶乘的算法,但为什么运行结果是0?想不明白。希望大家指导😭

回答:代码没问题的,应该是编译器的问题,代码逻辑很清晰;

img

#include <iostream>
using namespace std;

long fac(int n){
    long p;
    if(n == 1){
        p = 1;
    } else {
        p = n * fac(n-1);
    }
    return p;
}

int zh(int n, int m){
    int l, j, k;
    l = fac(n);
    j = fac(m);
    cout<<l<<endl;
    cout<<j<<endl;
    k = l / j;
    return k;
}

int main(){
    int m, n, l;
    cin>>n>>m;
    l = zh(n, m);
    cout<<l<<endl;
    return 1;
}

正确计算为:

img

#include <iostream>
using namespace std;

long fac(int n){
    long p;
    if(n == 1){
        p = 1;
    } else {
        p = n * fac(n-1);
    }
    return p;
}

int zh(int n, int m){
    int l, j, k;
    l = fac(n);
    j = fac(m);
    cout<<l<<endl;
    cout<<j<<endl;
    k = l / j;
    return k;
}

int main(){
    int m, n, l;
    cin>>n>>m;
    l = zh(n, m) / fac(n - m);
    cout<<l<<endl;
    return 1;
}