如何实施N选择R?

时间:2014-06-04 12:43:54

标签: c++

我刚写了这段代码:

#include <iostream>

using namespace std;

unsigned long long int choose(unsigned long long int k, unsigned long long int n)
{
    if (k==n or k==0)
    {
        return 1;
    }
    else
    {
        return (choose(n-1,k-1)+choose(n-1,k));
    }
}

int main(){
    cout << choose(3, 6);
}

但是我遇到了运行时错误,我认为我的问题出在我的变量中,我做了调试,但是我找不到答案,为什么我的运行时错误?

1 个答案:

答案 0 :(得分:2)

由于您的变量是未签名的,当它们已经1时从它们中删除0会使它们翻转到最大值。

n到达0然后您调用choose(n-1,k)时,这就会发生,而这就是问题的根源(stackoverflow)。