[英]How to do a recursive function with functional Programming?
我開始學習 C++ 並且我必須做一個程序來計算二項式系數,但它必須是遞歸的。 我只被允許使用函數式編程。 我已經寫了一些可以編譯的東西,但是答案不對。 我不知道該怎么辦。 (我認為我不應該使用我使用的階乘 function)。
這是我得到的:
#include <iostream>
#include "fcpp.hh"
int fak(int m){
return cond(m==0, 1, m*fak(m-1));
}
int binomial (int n, int k){
return cond(k==0 || k==n, 1,cond(0<k && k<n,(fak(n-1)/fak(k-1)*fak((n-1)-(k-1)))+binomial(n-2,k) ,0));
}
int main(int argc, char *argv[]) {
int x,y;
std::cout <<"Geben sie zwei Werte, um den Binomialkoeffizient B(n,k) zu berechnen"<< std::endl;
std::cout <<"Den ersten Wert 'n':" << std::flush;
x = enter_int();
std::cout <<"Den zweiten Wert 'k':" << std::flush;
y = enter_int();
print(binomial(x,y));
return (0);
}
功能說明:
cond(a,b,c) ( (a)? (b): (c) )
int enter_int ()
{
int x;
std::cin >> x;
return x;
}
你不需要階乘,你需要一個不同的二項式系數定義(你的看起來一點也不熟悉)。
二項式系數滿足
binomial(n, 0) == 1
binomial(n, n) == 1
binomial(n, k) == binomial(n-1, k) + binomial(n-1, k-1)
那是,
int binomial (int n, int k)
{
return (k == 0 || k == n)
? 1
: binomial(n-1, k) + binomial(n-1, k-1);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.