この関数を再帰的に定義するにはどうすればよいですか?これを再帰関数として実装するにはどうすればよいですか?
何とかkは同じに滞在しているが、私たちはAJを使用することはできませんとして、我々はあなたがn
を渡す必要が再帰関数のためにいつものように次の再帰ステップ
この関数を再帰的に定義するにはどうすればよいですか?これを再帰関数として実装するにはどうすればよいですか?
何とかkは同じに滞在しているが、私たちはAJを使用することはできませんとして、我々はあなたがn
を渡す必要が再帰関数のためにいつものように次の再帰ステップ
のためのkを変更する必要があります、k
およびj
も同様である。特に、ある特定の関数の実行について考えると、これは非常に論理的です。インクリメンタルプロダクトの1ステップのみを計算します。
the_func(n, k, j):
...
あなたは以下の実行に次のj
を渡すために、すべての特定の計算の後にJをインクリメントする必要があります。次のように結果としての機能の署名が見えます。さらに、次のようになります。終了条件を追加する必要があります。
if(k==j):
... Pop back the whole recursion...
私はまた、jを渡すことなくそれを行う方法が表示されません。答えをありがとう! – user6454491
はい、これは 'j 'なしでは不可能です。 –
あなたは再帰関数としてこれを行う必要がある場合は、のようなものを試してください:
def f(n: Double, k: Double) = {
def f0(k1:Double): Double =
if (k1 >= 1.0f)
(n-k+k1)/k1 * f0(k1-1)
else
1.0f
f0(k)
}
それはfoldLeftを探してチェックする価値がありますfoldRightと差異について読む。
kが下限が1であることを知っているので、3番目の変数は必要ありません。 。 –
hm。 OK。 (n-k + j)/ jのように、各ステップで使用されるkの初期値を保存せずに、kでどのようにカウントダウンするのですか? – user6454491
@ user6454491 ..私はk1値で数えています。再帰関数はf0です。私はf0をk1 = kで呼び出すことから始めます。値nとkは定数です。 f0に対する各再帰呼び出しは、k1を減分する、すなわち、* f0(k1-1)である。終了条件は、k1 = 0の場合です。その場合、1を掛けて答えを返します。 k1の名前をjに変更した方が意味があります。 –
イメージではなく実際のコードを提供してみませんか? –