[英]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")
有三件事是錯的: -
此外,如果列表在排序后加入並且可以直接轉換為整數,則可以更清楚地完成,(感謝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.