gpt4 book ai didi

python - 我正在编写嵌套的 while 循环,它们越来越深(> 12 个嵌套循环),我如何递归编码它?

转载 作者:行者123 更新时间:2023-11-28 16:59:30 27 4
gpt4 key购买 nike

我有一些代码基本上可以增加一个非常大的数字,我有一些 python 代码可以很好地完成较小数字的工作。

def test_loop():

base = 3

# increment number
for a in range(0,2):
b = a

while b < base:
c = b

while c < base:
d = c

while d < base:

n = (d + c*base**1 + b*base**2 + a*base**3)
print n

d += 1
c += 1
b += 1

这会打印出我想要的数字列表,当以 3 为基数表示时,长度最多为 4 位数字。我实际上需要达到 20 位以上的长数字,而且我编写的代码中嵌套的 while 循环越来越嵌套。我相信 Python 对可能的嵌套级别有限制,但一定有更好的递归方式吗?

示例结果01个2个4个5个8个1314172640414453

最佳答案

你是对的,在 Python 中嵌套 for 循环是有限制的。我认为它大约是 20,所以你的解决方案不起作用。但即使限制更大,你也会希望使用递归来使代码更清晰、简洁和灵活。以下是递归如何解决您的问题:

def list_special_numbers(base, digits, starting_digit=0, partial_sum=0):
if digits == 1:
for i in range(starting_digit, base):
print(partial_sum + i)
else:
for i in range(starting_digit, base):
list_special_numbers(base, digits-1, i, partial_sum + i*(base**(digits-1)))

# *** Usage examples ***

# print the list of desired numbers up to 20-ternary-digit numbers
list_special_numbers(3,20)

# print the list of desired numbers up to 30-ternary-digit numbers
list_special_numbers(3,30)

# print the list of desired numbers up to 30-binary-digit numbers
list_special_numbers(2,30)

# print the list of desired numbers up to 3-decimal-digit numbers
list_special_numbers(10,3)

关于python - 我正在编写嵌套的 while 循环,它们越来越深(> 12 个嵌套循环),我如何递归编码它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55446352/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com