我需要找到1和最大N位整数之间的整数,例如:当n = 3时我需要返回1 ... 999。并使用递归。以下是我的代码。问题是我不知道确切的数据结构来表示数字。准确返回(n = 2): [1,2,3,...... 99] ,但我返回 [[0,0],[0,1] ,. 。[9,9]] 。我用列表来表示数字。有没有人知道确切的代表数字呢?
for
答案 0 :(得分:1)
这是一种方法。
class Solution():
def __init__(self,inp):
self.inp = inp
self.val = pow(10,inp) - 1
self.ans = []
def solution(self):
if self.val>0:
self.ans.append(self.val)
self.val-=1
self.solution()
inp = input()
sol = Solution(inp)
sol.solution()
print sol.ans
你也许想看到这个。 Recursion in Python? RuntimeError: maximum recursion depth exceeded while calling a Python object
Python has a recursion depth limit。
执行
检查import sys
print sys.getrecursionlimit()
<强> EDITED 强>
def numbersByRecursion(n,largest,result):`
def recursion(num,largest,result):
if num <= largest:
result.append(num)
return recursion(num+1,largest,result)
else:
return result
return recursion(n,largest,result)
result = []
n = input()
largest = pow(10,n) - 1
ans = numbersByRecursion(1,largest,result)
print ans
答案 1 :(得分:0)
如果您的问题是如何击败像
这样的列表list = [[0,0], [0,1], [0,2], ... , [9,9]]
进入
result_list = [0, 1, 2, 3, ..., 99]
然后你可以这样做:
def format_list(list):
result_list = []
for item in list:
result = 0
power = len(item)*10
for digit in item:
result += digit ** power
power /= 10
result_list.append(result)
return result_list
免责声明:未对此进行测试
答案 2 :(得分:0)
试试这个
def myfn(n):
def myfn2(i):
if i==int(n*'9'):
return [int(n*'9')]
return [i]+myfn2(i+1)
return myfn2(1)
这给出了
>>>myfn(2)
[1,2,.....,98,99]
希望这有帮助