Recursion 编写一个递归函数,用伪代码对奇数二进制数为1的值的个数求和
我有一个家庭作业问题,上面写着: 使用本文介绍的伪代码原理编写一个递归函数sum_odd(n) 在讲座中,总结1到n之间的数字i,其中i的二进制表示形式 包含1的奇数,例如,14表示为0b1110,其中包含奇数 是1的。 您可以假设您可以访问一个函数binary_ones(d),该函数返回 在d的二进制表示中。您不应该写出此函数,但可以在 伪代码。您还可以假设n将大于0–不需要进行错误检查 到目前为止,我已经得出了以下结论:Recursion 编写一个递归函数,用伪代码对奇数二进制数为1的值的个数求和,recursion,pseudocode,Recursion,Pseudocode,我有一个家庭作业问题,上面写着: 使用本文介绍的伪代码原理编写一个递归函数sum_odd(n) 在讲座中,总结1到n之间的数字i,其中i的二进制表示形式 包含1的奇数,例如,14表示为0b1110,其中包含奇数 是1的。 您可以假设您可以访问一个函数binary_ones(d),该函数返回 在d的二进制表示中。您不应该写出此函数,但可以在 伪代码。您还可以假设n将大于0–不需要进行错误检查 到目前为止,我已经得出了以下结论: function sum_odd(n): read n
function sum_odd(n):
read n
sum = 0
if n is less than or equals to 0 then
return sum
else if binary_ones(n) % 2 equals 1 then
return sum = sum + sum_odd(n-1)
else
return sum_odd(n-1)
end if
我关心的是sum=sum+sum_奇数(n-1)部分。我不认为它会增加输入的第一个值,这让我怀疑我是否做对了
我需要一些帮助。我还没有足够的声誉发表评论,所以我会将此作为一个答案发布 下面是我认为您的伪代码中存在的一些缺陷-
读取n
,它是作为参数传递的,因此读取n
应该由调用sum\u odd(n)
的主函数完成return sum=sum+sum\u odd(n-1)
它应该是return n+sum\u odd(n-1)
。你
没有做汇总数字部分,您没有添加数字
符合条件的sum=0
变量,只需返回0
即可n感谢您的帮助!我对返回0位有点困惑。这不会导致最终结果仅为0吗?除此之外,我现在完全理解了。sum=0
为每个函数调用创建一个新变量sum
。返回0
应替换返回和
。如果n的值为