【发布时间】:2014-12-15 17:49:13
【问题描述】:
我是递归函数概念的初学者。我有 2 个问题要问:
给定:如果 n 是偶数,则 f(n) = n/2,如果 n 是奇数,则 f(3n+1)。 如何编写递归函数来计算 f(n)?
-
你注意到以下递归函数有什么问题?显示 2 种可能的纠正方法。
int silly(int n ) { if (n<= 0) return 1; else if (n%2==0) return n; else silly(n-3); }
【问题讨论】:
-
1) 使用 google 和 "Collatz in C" 2) 你确定你复制的程序正确吗,在尝试解决“递归”问题之前有很多语法问题。
-
听起来像是学校作业。您的代码中有一些明显的问题,这是第 2 部分希望您解决的问题。
-
你对
silly()的递归调用的返回值做了什么?什么都没有,silly()没有返回值。 -
之前发过完整的作业答案,结果发现OP不客气的删了题——不让同学看到?
-
问题陈述的无限递归:从 n = 1 开始,然后调用 f(3n+1) = f(4)。调用 f(n/2) = f(2),然后调用 f(n/2) = f(1) 重复循环。