gpt4 book ai didi

python - 11 的整除性测试的递归函数?

转载 作者:行者123 更新时间:2023-12-02 02:51:26 26 4
gpt4 key购买 nike

11 的整除性测试表明,如果一个数中奇数位之和与偶数位之和的差能被 11 整除,则整个数可以被 11 整除。

例如7689,奇数位之和 = 9 + 6 = 15,偶数位之和 = 8 + 7 = 15。

由于 (15 - 15) % 11 == 0,该数字可以被 11 整除。

我编写了一个迭代函数来评估它,如果该数字确实能被 11 整除,则给出 True 结果。如何编写此代码的递归版本?我很难解决这个问题。

def divisible_by_11_iter(num):
num_lst = [i for i in str(num)]
even_sum = 0
odd_sum = 0
for even in num_lst[::2]: # naming does not really matter as negatives taken into acc
even_sum += int(even)
for odd in num_lst[1::2]:
odd_sum += int(odd)
if (odd_sum - even_sum) % 11 == 0:
return True
else:
return False

最佳答案

您当前的代码不是迭代的,它只是通过在最后执行实际的差值模数来“作弊”。如果您可以执行something % 11 == 0,则应该对顶部的num执行此操作,而不要搞乱数字求和。

无论如何,要递归地实现这一点,您需要弄清楚可以轻松解决的基本情况是什么。我建议您可以非常简单地求解小于 11 的正值。零可以被整除,0到11之间的所有数字都不能被整除。

对于较大的数字,您可以进行数字求和并递归。

def divisible_by_11(num):
if num == 0:
return True
if num < 11:
return False
num_lst = [int(i) for i in str(num)]
even_sum = sum(num_lst[::2])
odd_sum = sum(num_lst[1::2])
return divisible_by_11(abs(even_sum - odd_sum))

关于python - 11 的整除性测试的递归函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61907020/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com