【发布时间】:2016-04-21 13:31:33
【问题描述】:
我需要在 C 中编写一个递归函数,对于某个 n,它会计算不具有三个连续数字 1 的 n 位二进制数的数量。
例如,对于 n=3,所有可能的 3 位数是: 000 001 010 011 100 101 110 111
所以函数返回 7,因为只有一个数字和三个 1。
到目前为止,我什至不知道从哪里开始。我看不到任何可以帮助我的算法。
任何帮助将不胜感激。 谢谢。
【问题讨论】:
-
嗯...我不确定我们是否应该为您做作业...
-
@Myst 我仍然认为这是一个好问题(即使它可能是家庭作业)。这里的算法部分比C实现更有趣。
-
您是否考虑过为什么作业建议使用递归解决方案?也许这是您应该设计的算法的提示。
-
@AlexLop。我不确定一个问题是否应该被投票,因为一位老师给出了一个有趣的作业(而不是一个无聊的作业)。
-
@Lundin 嘿,您可能(在某种程度上)对 C 和命令式语言是正确的,但函数式编程是建立在递归之上的。即使在命令式语言中,也有递归数据结构可以自然地通过递归处理。