ArithmSumRec(n)
1. If n = 1
1.1 return 1
2. Else
2.1 return ArithmSumRec(n-1) + n
したがって、たとえばn = 5と計算すると、次のようになります。括弧の外だと5に何が起こるかJava再帰合計内訳
return ArithmSumRec(5-1) + 5;
- しかし:この方法は、それはだ最初の時間を返すとき
Executing ArithmSumRec(5) ⇒ 5 calls to ArithmSumRec(...) ArithmSumRec(5) ArithmSumRec(4) ArithmSumRec(3) ArithmSumRec(2) ArithmSumRec(1) return 1 // base case return 1 + 2 (= 3) return 3 + 3 (= 6) return 6 + 4 (= 10) return 10 + 5 (= 15)
は、しかし、私の質問は、今です。なぜメソッドは9を返さないのですか((5-1)+5 = 9?)、代わりに4を返しますか?そして、それはどこですか?
+n
?
既に見つかっていないスレッドや、再帰的メソッドを完全に説明しているウェブサイトがある場合は、その点を非常に高く評価します。
お待ちください、何をお尋ねしますか?再帰は、 'stop'パラメータが満たされるまで、メソッド内のメソッドを呼び出しています。 – DarmaniLink
ArithmSumRec()関数が完全にポストされている可能性があります。 – ApolloSoftware
式は「内側から外側」と評価されます。 'ArithmSumRec(5-1)+ 5'は' ArithmSumRec(4)+ 5'とまったく同じです。実際、javacが生成するバイトコードはどちらの場合でも同じになります。 javacは定数式 '5-1'を' 4'にインライン化します。 – yshavit