我在做作业题。你知道吗
编写一个程序,用11整除(num),返回num的可整除性 11点之前。i、 e.divisible_by_11(num)应返回True is num is divisible by 11, 否则为假。使用以下算法递归实现此函数。你知道吗
注:如果奇数和之间的差值 偶数之和可以被11整除。注意0可以被11整除。你知道吗
def divisible_by_11(num):
def helper(num,i):
if num==0:
return 0
elif i%2:
return helper(num//10,i+1)-num%10
Question is about replacing the above line with
return -num%10+ helper(num//10,i+1)
elif i%2==0:
return num%10+helper(num//10,i+1)
return helper(num,0)%11==0
但是,如果我写的是return -num%10+ helper(num//10,i+1)
而不是return helper(num//10,i+1)-num%10
,代码就会失败。有人能告诉我发生了什么事吗?你知道吗
备用表格的问题是由于操作顺序造成的。一元减号运算符比mod运算符绑定得更紧密。也就是说,表达式
-num%10
被解释为(-num) % 10
,负数的模与其最后一个数字不同。你知道吗有几种方法可以解决它。最简单的方法可能是添加自己的括号,以便mod首先发生:
return -(num%10) + helper(num//10,i+1)
应该按预期工作。你知道吗与这个问题无关,我非常怀疑您的赋值是否允许您在最终返回中执行
%11
,因为该操作是您解决整个问题所需的全部,而不需要其他操作!你知道吗相反,我怀疑它也希望您对该部分使用递归(可能不希望将数字相加)。与其
return helper(num,0)%11==0
,不如尝试:相关问题 更多 >
编程相关推荐