C++ 如何实现N选择R?

C++ 如何实现N选择R?,c++,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(

我刚刚写了这段代码:

#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);
}
#包括
使用名称空间std;
无符号长整型选择(无符号长整型k,无符号长整型n)
{
如果(k==n或k==0)
{
返回1;
}
其他的
{
返回(选择(n-1,k-1)+选择(n-1,k));
}
}
int main(){

cout由于变量是无符号的,当它们已经
0
时,从它们中减去
1
将使它们滚动到最大值


n
到达
0
并调用
choose(n-1,k)
时,就会发生这种情况,这就是问题的根源(堆栈溢出)。

可能重复“choose”函数是二项式系数。@anthony arnold这个问题不象是个骗局。我不想复制别人的代码。好的,我不会再打扰你了。我怎样才能解决它?我想我必须插入一些IF@user3700182
或n==0
?你的意思是::如果(k==n或k==0或n==0)??@user3700182您认为这有意义吗?@user3700182其他一些建议-除非这是您的编码惯例,否则请使用更惯用的
|
而不是