- 论坛徽章:
- 0
|
原帖由 mhsy2003 于 2009-4-16 09:03 发表 ![]()
>>> print ((lambda self,n:1 if n==1 else n*self(self,n-1))((lambda self,n:1 if n==1 else n*self(self,n-1)),2))
2
>>> print ((lambda self,count,n,value:value if count==n else self(self,count+1,n ...
- >>> print ((lambda self,count,n,value:value if count==n else self(self,count+1,n,(count+1)*value))((lambda self,count,n,value:value if count==n else self(self,count+1,n,(count+1)*value)),1,5,1))
- 120
复制代码
将2楼的程序抽象了一下。
- (define (F g) (lambda ( . x) (apply g (cons g x))))
- (define fact (lambda (s c n v) (if (= c n) v (s s (1+ c) n (* (1+ c) v)))))
- ((F fact) 1 5 1)
复制代码
2楼的Y Combinator看起来长得不像Y Combinator, Y Combinator看起来应该似一个不动点函数,而2楼的看上去不似。
[ 本帖最后由 x2 于 2009-4-17 14:56 编辑 ] |
|