编程范式20 函数式编程

lisp 定义函数

(define sum-list (numlist)
    (if (null?num-list) 0
        (+(car num-list)
            (sum-list (cdr num-list))))
>(sum-list '(1 2 3 4 5))
15
>(sum-list '()
0
define fib(n)
    (if(zero?n) 0
        (if (= n 1) 1
            (+ (fib ( - n 1))
                (fib (- n 2))))))
(define fib(n)
    (if (or (= n 0)
        (if (= n 1)) n
            (+ (fib ( - n 1))
                (fib (- n 2)))))

flattern

类似python里面的flattern

>(flatten '(1 (2 "3") "4" ((5))))
(1 2 "3" "4" 5)
(define flattern (sequence)
    (cond(((null?sequence) '()
        ((list?(car sequence))
            (append (flattern (car sequence)
                (flattern(cdr sequence))...)
        (else (cms (car sequence)
            (flattern(cdr sequence))...)

sort

判断一个列表是否为排好序的

>(sorted? '(1 2 2 4 7))
#t
>(sorted? '(1 8 2 4 7))
#f
(define sorted? (num-list)
    (or (< (length num-list) 2)
        (and (<= (car num-list)
                 (cadr num-list)
             (sorted? (cdr num-list))...)

lisp的list是链表

泛型sort

>(sorted? '(1 3 4 7) <=)
#t
>(sorted? '("a" "b" "d" "c") string<)
#f
(define sorted?(seq comp)
    (or(< (length seq) 2)
       (and (comp(car seq)
                  (cadr seq))
             (sorted?(cdr seq comp))))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值