学习CS61A递归中,银行卡校验位luhn算法中出错
def split(n):
return n//10,n%10
def digits(n):
if n<10:
return n
else:
remain,last=split(n)
return split(remain)+last
def sum_luhn_single(n):
if n<10:
return n
else:
remain,last=split(n)
return sum_luhn_double(remain)+last
def sum_luhn_double(n):
if n<10:
return digits(2*n)
else:
remain,last=split(n)
sum_last_double=digits(2*last)
return sum_luhn_single(remain)+sum_last_double
print(sum_luhn_single(1234))
TypeError: can only concatenate tuple (not "int") to tuple
print(sum_luhn_single(1234))
14
数字位数较小有时可以,但是真正银行卡位数就报错,想问问是不是
def split(n):
return n//10,n%10
中return出现错误
这个代码没有问题,是正常输出的!
可能是版本的问题,你尝试return (n//10,n%10)
解决问题
10行中返回函数错误,应该为本身!