2015-07-21 133 views
0
def is_power(a,b): 
    if a<b: 
     is_power(b,a) 
    elif a==b: 
     return True 
    else: 
     if a%b !=0: 
      return False 
     else: 
      is_power((a/b),b) 


is_power(2,32) 

我不知道爲什麼它沒有任何東西展現出來,但是當我打印功能的最後一行「is_power((A/B),B)」,它表明:爲什麼這個迭代沒有返回任何東西?

True 
None 
None 
None 

我寫在筆記本的IPython和Python的版本上運行它是2.7.10.1

+0

FunkySayu的答案不完全正確,看我正確的答案和下面的結果。 – Geeocode

回答

0

您已將return語句插入相應的行並必須添加到代碼末尾:print is_power(x,y), 其中調用is_power()函數並返回輸出值。 單獨使用IPython is_power(x,y)的注意事項也適用。

def is_power(a,b): 
    if a<b: 
     return is_power(b,a) 
    elif a==b: 
     return True 
    else: 
     if a%b !=0: 
      return False 
     else: 
      return is_power((a/b),b) 


print is_power(2,32) 

輸出:

True 
+0

非常感謝。 –

+0

我很樂意幫助你。 – Geeocode

1
def is_power(a,b): 
    if a<b: 
     return is_power(b,a) 
    elif a==b: 
     return True 
    else: 
     if a%b !=0: 
      return False 
     else: 
      return is_power((a/b),b) 

你正在運行一個遞歸函數,而不返回上步什麼。

is_power(2, 32) 

First step : if a < b: return is_power(32, 2) 
Second step : (else condition): return is_power(16, 2) 
Thrid step : (else condition): return is_power(8, 2) 
Fourth step : (else condition): return is_power(4, 2) 
Fifth step : (else condition): return is_power(2, 2) 
Sixth step : (elif a==b): return True 

Result: True 

如果你錯過任何return語句,代碼將不會返回任何東西比None

+0

這不是正確的答案 – Geeocode

+0

正如你可以看到is_power(2,32)的結果是True – Geeocode

+0

Woups抱歉,這是一個小錯誤。糾正。 – FunkySayu

0

你的程序是由返回一個Boolean,因此你要麼得到一個TrueFalse
如果你想要一個不同的輸出,你必須編寫它來產生別的東西。

在你的代碼中只有2 return語句是這些:

elif a==b: 
    return True 

和:

else: 
    if a%b !=0: 
     return False 



因此,你可以期望的唯一輸出TrueFalse

相關問題