使用python中的递归查找1和最大N位之间的整数

时间:2016-03-27 14:02:19

标签: python recursion permutation

我需要找到1和最大N位整数之间的整数,例如:当n = 3时我需要返回1 ... 999。并使用递归。以下是我的代码。问题是我不知道确切的数据结构来表示数字。准确返回(n = 2): [1,2,3,...... 99] ,但我返回 [[0,0],[0,1] ,. 。[9,9]] 。我用列表来表示数字。有没有人知道确切的代表数字呢?

for

3 个答案:

答案 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]

希望这有帮助