如何设计递归

最后更新于:2022-04-02 02:05:28

[TOC] ### 如何设计递归 例子 1 ``` ;由n个 hello构成的表 ;hellos:n->list-of-symbols ;预期值 ;(hellos 0) ;empty ;(hellos 1) ;(cons 'hello empty) ->(cons 'hello (hellos 0)) ;可以看出带有递归性 ; (hellos 2) ; (cons 'hello (cons 'hello empty)) -> (cons 'hello (hellos 1)) (define (hellos n) (cond [(= n 0) empty] [else (cons 'hello (hellos (- n 1)))])) (hellos 2) ;(list 'hello 'hello) ``` 例子 2 ``` ; 阶乘 ; 1!->1 ; 2!->1x2->1x1! ; 3!->1x2x3->3x2! ; n!->nx!(n-1) (define (! n) (cond [(= n 1) 1] [else (* n (! (- n 1))) ])) (! 1);1 (! 3);6 ```
';