異なる命名規則に書かれたあなたのコード...
def compute(low, high):
if low > high:
return 0
else:
return low + compute(low+1, high)
(低)、整数、および(高い)の整数が言ったよりも高くなっている別の整数を指定すると、このコードは、それらの間の合計を検索します2つの整数(再帰を介して)。
上記は再帰、つまり初期条件が満たされないたびにif low > high:
になると30を返し、関数は再び呼び出され、1を加えて最終的に条件を満たすようにします。 (ローが10に等しい場合)再帰がで設定されます
をさらに例compute(6, 9)
と - 低= 10、0が返された場合、以前に低い9であったので、この時点での発現return low + compute(low+1, high)
は今、return 9 + 0
あろう前の呼び出しから9を返したので、return 8 + 9
、17を返します...私はあなたがポイントを得ると思う、このプロセスは、最初のreturn文まで発生します。それを、卑猥なものを巻き戻すことと考えて、それを最初の形に戻してください。
最終的に満たされる条件とインクリメンタルなreturn文がなければ、この関数は無限に同じ結果を返して、if
の条件が満たされないか、無限に1を低くすることに注意してください。
私はこれが再帰を少し明るくすることを望みます。
ちょうどコメント: 'sum'は[組み込み関数](https://docs.python.org/3/library/functions.html#sum)です:別の名前を選択する必要があります... –
42?それはどこから来たのですか?それはすべてに対する答えではありません。これらの下位と上位の場合、どこにいてもあなたはどこにでもいます。 –
これを実際に理解するには、呼び出しスタックの仕組みを調べる必要があります。 –