这里用python做一个mutual recursion
def split(n): return n//10, n%10 def luhn_sum(n): if n<10: return n else: rest, last = split(n) return luhn_double_sum(rest) + last def luhn_double_sum(n): rest, last = split(n) luhn_digit = split(2*last)[0] + split(2*last)[1] if n<10: return luhn_digit else: rest, last = split(n) return luhn_sum(rest) + luhn_digit