假设你把整数分成100->[1,0,0]这样的数组
如何编写递增长整数的递归函数。例如incr([9,9])>[1,0,0]?
我知道如何非递归地做。

最佳答案

这是@Mbo算法在Python中的一个示例实现:

def addOne(a, ind, carry):
    if ind<0:
        if carry > 0:
            a.insert(0, carry)
    else:
        n = a[ind] + carry
        a[ind] = n%10
        carry = n/10
        addOne(a, ind-1, carry)


n = int(raw_input("Enter a number: "))
a = []
if n == 0:
    a.append(0)

while n>0:
    a.append(n%10)
    n = n/10

a = list(reversed(a))
print "Array", a

# performing addition operation
addOne(a,len(a)-1,1)
print "New Array", a

注意:我最初将1作为carry发送,因为我们想在数字上加1。
样本输入/输出
Enter a number:  99
Array [9, 9]
New Array [1, 0, 0]

10-07 22:05