簡體   English   中英

將以下迭代代碼轉換為遞歸Python

[英]convert following iterative code to recursive Python

在印度數學家DR Kaprekar之后,6174被稱為Kaprekar常數[1] [2] [3]。 此數字值得注意以下屬性:

使用至少兩個不同的數字取任何四位數字。 (允許前導零。)按降序排列數字,然后按升序排列以獲得兩個四位數字,必要時添加前導零。 從較大的數字中減去較小的數字。 回到第2步。

Dattaraya Ramchandra Kaprekar

number="0011" 

print(" helo world,  lets do this: " , number)
i = 0
while number != "6174":
 sortedS = sorted(number)                            
 String[] sortedString = array[4] av strangen number
 reversed = sorted(number, reverse=True)            
 sortedIntMin = int(sortedS[0]+sortedS[1]+sortedS[2]+sortedS[3])
 reversedIntMax = int(reversed[0]+reversed[1]+reversed[2]+reversed[3])  
 i += 1
 number = str(reversedIntMax - sortedIntMin)                                           
 reversedIntMax - sortedIntMin
 print("det behovdes " , i , "iterationer for processen")

這是我不成功的嘗試

def Kaprekar(number, i):
if number == 6174:
    return
elif number != 6174:
    sortedString = sorted(number)
    reversedString = sorted(number, reverse=True)
    sortedIntMin = int(sortedString[0]+sortedString[1]+sortedString[2]+sortedString[3])
    reversedIntMax = int(reversedString[0]+reversedString[1]+reversedString[2]+reversedString[3])
    num = reversedIntMax - sortedIntMin
    print("processen kors", num )
    return 1 + Kaprekar(str(num), i)

print(" helo world,  lets do this: ")
print("det behovdes " , Kaprekar("1547", 0) , "iterationer for processen")

有三件事是錯的: -

  1. 你不需要我。 從功能定義中刪除它。
  2. 您傳遞的變量是一個字符串,您將其與整數進行比較,並在比較時將其轉換為字符串。
  3. 當number ='6174'時,你需要返回1,而你返回None。
  4. 此外,如果列表在排序后加入並且可以直接轉換為整數,則可以更清楚地完成,(感謝endzior進行編輯)

    嘗試這個 : -

     def Kaprekar(number): if number == '6174': return 1 elif number != '6174': sortedString = ''.join(sorted(number)) reversedString = ''.join(sorted(number, reverse=True)) sortedIntMin = int(sortedString) reversedIntMax = int(reversedString) num = reversedIntMax - sortedIntMin print("processen kors", num ) return 1 + Kaprekar(str(num)) print(" helo world, lets do this: ") print("det behovdes " , Kaprekar("1547") , "iterationer for processen") 

number是一個字符串,所以在前兩個if語句中:

if number == '6174':
    return 1
else:

而在另一個答案中, i不需要變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM