scheme匿名函数递归

匿名函数与“有名函数”scheme中匿名函数使用 lambda 函数实现,格式为:(lamdba <parameter> <body>)例如:(lambda (i) (+ i 3)) ;接受一个参数,返回它与3的和调用方法为:> ((lambda (i) (+ i 3)) 2)5而有名函数的定义方式和调用方式如下:(define (<n...
摘要由CSDN通过智能技术生成
匿名函数与“有名函数”

scheme中匿名函数使用 lambda 函数实现,格式为:

(lamdba <parameter> <body>)

例如:

(lambda (i) (+ i 3))  ;接受一个参数,返回它与3的和

调用方法为:

> ((lambda (i) (+ i 3)) 2)
5

而有名函数的定义方式和调用方式如下:

(define (<name> <parameter>)  ;格式
  <body>)

(define (function n)  ;例子
  (+ n 3))

(function 4) ;调用 function
>7
用匿名函数实现递归

递归是指一个函数调用自身的过程,一般是通过函数名调用,但是匿名函数没有名称,即无法通过函数名直接调用

使用匿名函数实现递归主要通过加入一个参数的方式,例如:

((lambda (fn n fn))  ;接受一个参数10,并把它变为1
 (lambda (a f)
   (if (= a 1)
       a
       (f (- a 1) f)))
  10)

这个例子挺蠢的:直接接受参数然后返回1就好了,但它是一个完整并且可以运行的匿名函数递归,可以用这个例子理解匿名函数递归的实现方法。下面是一个匿名函数实现斐波那契数列的例子,它能接受一个参数 n ,并返回第n个斐波那契数&#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值