はい、これは宿題です。しかし、私は答えを持っています(うまくいくまでそれで遊んだ)私の質問は、「どのように」先生に何度も説明してもらいました(オンラインクラス)ですが、ここの誰かがもっと上手であることを願って、私はそれを理解していません私が考えるように物事を説明します。
割り当ては次のとおりです。
再帰的に自分自身を呼び出して同じ問題のより小さなバージョンを解き、その結果を で乗算して最初の問題を解くことによってrecurPower(base, exp)
計算する関数を作成します。base**exp
base
この関数は 2 つの値を取る必要がbase
あります。浮動小数点数または整数を指定できます。exp
整数≥0になります。1 つの数値を返す必要があります。コードは再帰的でなければなりません**
。演算子またはループ構造の使用は許可されていません。
さて、試行錯誤を数回試みた後(これは、物事を大幅に変更するのに数時間かかることを意味します)、正しいコードを思いつき、正しい答えを解決しましたが、方法がわかりません。
コードは次のとおりです。
def recurPower(base, exp):
'''
base: int or float.
exp: int >= 0
returns: int or float, base^exp
'''
if exp <= 0:
return 1
return base * recurPower(base, exp - 1)
最初のものは、exp = 0 の場合、戻り値が 1 になる部分です。なぜ何かが 1 で返されるのか理解できません。 ?