回 帖 发 新 帖 刷新版面

主题:[讨论]这个函数是递归的吗?

看书看得郁闷。程序设计方法学第十章算法后面习题有一道:

已知下列函数f(x)
f(0)=1
f(1)=3
f(x+2)=(x+2)*f(x) 当x>1时

证明f(x)是递归的。

郁闷死啊,这一张前面根本就没说如何证明递归,只是举了几个简单的递归的例子,然后归纳出设计递归函数的三步骤:
1)识别过程、参量和规模
2)确定原过程和规模较小过程的类似过程
3)确定终止条件

好吧,如果设计一个f(x)的递归算法是不是就能证明f(x)是递归的了呢?貌似可以,不过仔细一看,f(0) f(1)有定义,f(2)依赖于f(4),f(3)依赖于f(5),f(4)依赖于f(6),这不是发散式的吗?怎么递归啊?

难道题目出错了?

更前面第一部分讲图灵机的时候说了递归函数,说图灵机能解的函数就是部分递归函数,原递归函数从属于部分递归函数。那么也就是说,只要有图灵机对应的程序,就可以证明函数是递归的!然而图灵机就是现实计算机的抽象,因此用现实的程序写一个算法也算。这个思路和上面思路一样,怎么才能把f(x)化成f(x)=h(x, f(x-n))的形式?

回复列表 (共7个回复)

沙发

楼主是该休息一下了,呵呵。明明是f(4)依赖于f(2),f(5)依赖于f(3),f(6)依赖于f(4)嘛。
实际上只要x是偶数,f(x)最后必归于f(0);而x为奇数时必定归于f(1)。

板凳

那f(2)和f(3)怎么算?如果看成收敛的,那么这两个值未定义……

3 楼

f(x+2)=(x+2)*f(x) 可以改成
f(y) = y*f(y-2)    (y = x+2)  (y>1)

f(3)=(1+2)*f(1) = 3*3 = 9
f(2)=(0+2)*f(0) = 2*1 = 2

4 楼

(y = x+2)  (x>1) => y>3!!

我说这题目出错了。。。x>1的条件真的是。。。

5 楼

有什么错误吗??x=0,1时直接得到值,当x>1时,用公式f(x+2)=(x+2)*f(x)求f(x+2)的值...

6 楼

我就纳闷,为什么第三个式子不写成f(x) = x*f(x-2), x>1

毕竟f(x+2)=(x+2)*f(x) 当x>1时看起来好像是说x最小为2,至少也得是f(4)=4*f(2)

7 楼

你好.我是全职网赚工作者.
如果你有时间有电脑.
想在网络上创业.请联系我..
项目绝对真实.详情QQ空间资料
加盟请联系 QQ908889846

我来回复

您尚未登录,请登录后再回复。点此登录或注册