我正在编写嵌套的while循环,这些循环越来越不切实际(> 12个嵌套循环),我该如何递归编码?

我正在编写嵌套的while循环,这些循环越来越不切实际(> 12个嵌套循环),我该如何递归编码?,第1张

概述我有一些代码本质上会增加一个非常大的数字,我有一些python代码可以很好地处理较小的数字.def test_loop(): base = 3 # increment number for a in range(0,2): b = a while b < base:

我有一些代码本质上会增加一个非常大的数字,我有一些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在可以嵌套多少层上有一个限制,但是使用递归还必须有更好的方法吗?

结果示例
0
1个
2
4
5
8
13
14
17
26
40
41
44
53最佳答案没错,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 numbersList_special_numbers(3,20)# print the List of desired numbers up to 30-ternary-digit numbersList_special_numbers(3,30)# print the List of desired numbers up to 30-binary-digit numbersList_special_numbers(2,30)# print the List of desired numbers up to 3-decimal-digit numbersList_special_numbers(10,3)
总结

以上是内存溢出为你收集整理的我正在编写嵌套的while循环,这些循环越来越不切实际(> 12个嵌套循环),我该如何递归编码? 全部内容,希望文章能够帮你解决我正在编写嵌套的while循环,这些循环越来越不切实际(> 12个嵌套循环),我该如何递归编码? 所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1199661.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存