用伪代码编写一个递归函数,对值的数量求和,二进制数为 1 的奇数
Writing a recursive function that sums up the number of values, with odd binary number of 1s, in pseudocode
我有一个家庭作业问题:
使用涵盖的伪代码原理编写递归函数sum_odd(n)
在讲座中,总结 1 和 n 之间的数字 i 其中 i 的二进制表示
包含奇数个 1,例如 14 表示为 0b1110 其中包含一个奇数
1 秒。
您可以假设您可以访问函数 binary_ones(d),其中 returns
d 的二进制表示中的那些。你不应该写出这个函数,但可以在你的
伪代码。您还可以假设 n 将大于 0 – 不需要错误检查。
到目前为止,我想出了这个:
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_odd(n-1) 部分。我不认为它会添加输入的第一个值,这让我怀疑我是否做对了。
需要一些帮助。
我还没有足够的声誉来发表评论,所以我将 post 作为答案。
所以我认为您的伪代码中存在一些缺陷-
- 你不需要
read n
,它作为参数传递,所以read n
应该由调用 sum_odd(n)
. 的主函数完成
- 你的担心是对的,不应该是
return sum = sum + sum_odd(n-1)
,应该是return n + sum_odd(n-1)
。你
没有做 sum up the numbers 部分,你没有添加数字
满足条件
- 您不需要
sum = 0
变量,对于 n <= 0
条件,您可以 return 0
。
我有一个家庭作业问题:
使用涵盖的伪代码原理编写递归函数sum_odd(n) 在讲座中,总结 1 和 n 之间的数字 i 其中 i 的二进制表示 包含奇数个 1,例如 14 表示为 0b1110 其中包含一个奇数 1 秒。 您可以假设您可以访问函数 binary_ones(d),其中 returns d 的二进制表示中的那些。你不应该写出这个函数,但可以在你的 伪代码。您还可以假设 n 将大于 0 – 不需要错误检查。
到目前为止,我想出了这个:
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_odd(n-1) 部分。我不认为它会添加输入的第一个值,这让我怀疑我是否做对了。
需要一些帮助。
我还没有足够的声誉来发表评论,所以我将 post 作为答案。
所以我认为您的伪代码中存在一些缺陷-
- 你不需要
read n
,它作为参数传递,所以read n
应该由调用sum_odd(n)
. 的主函数完成
- 你的担心是对的,不应该是
return sum = sum + sum_odd(n-1)
,应该是return n + sum_odd(n-1)
。你 没有做 sum up the numbers 部分,你没有添加数字 满足条件 - 您不需要
sum = 0
变量,对于n <= 0
条件,您可以return 0
。