2017-04-16 10 views
0

申し訳ありませんので、私は主な機能のどこかに問題があるようです。まだ基数と指数の両方を入力することができます。次の関数に移動すると、サポートされていないオペランドエラーが出力されます。私は間違って何をしたのか正確にはわかりません。基本的には、ベースと指数を入力して答えを出力するだけです。再帰文エラー

私は現在2.xで書いていますが、3.xも使用できます 以下は現在のコードです。

def power (base, exponent): 
    if exponent == 0: 
     return base 
    else : 
     return base * power(base, exponent - 1) 


def main(): 
    base = input('Please Enter An Integer for the Base: ') 
    exponent = input ('Please Enter An Exponent: ') 
    print(power(base,exponent)) 
main() 
+0

はなぜプログラムは答えるために倍増私を与えることでしょうか?たとえば、2^2を入力すると、4になるときに8が出力されます.4^2にすると64が出力されます。 – Yrroth

答えて

0

基本と指数の型をint/floatに変換する必要があります。入力文の型はstrなので、

以下のコードは動作します:

def power (base, exponent): 
    if exponent == 0: 
     return 1 
    if exponent == 1: 
     return base 
    else : 
     return base * power(base, exponent - 1) 

def main(): 
    base = int(input('Please Enter An Integer for the Base: ')) 
    exponent = int(input ('Please Enter An Exponent: ')) 
    print(power(base,exponent)) 
main() 
+2

OPはPy2でコードが実行されていると言います。 Py2では、 'input'は入力文字列を自動的に' eval'するので、数値を入力すると 'int' /' float'となります。 – ShadowRanger

+0

figure私はこのような簡単な修正が欠けてしまうでしょう.-今、私の数学が正しく出力されない理由を考えてみましょう。 4^2は間違いありません64 – Yrroth

+0

@Yrroth:指数== 1が正常に動作します 場合 も前にこれを追加します。 もし指数== 0: リターン理にかなって1 – anati