美文网首页
递归,迭代,高阶函数

递归,迭代,高阶函数

作者: Lucien_d70a | 来源:发表于2019-04-08 16:10 被阅读0次

代入求值

(define (sq x) (* x x))
(define (sqsum a b) 
            (+ 
            (sq a) 
            (sq b)))
(define (f z)  
            (sqsum z (+z 1)))
上面表达是求: f(z) = z2 + (z + 1)2
  • 函数慢慢拆开 参数代入
(f 5)
(sqsum 5 (+ 5 1))
(+ (sq 5) (sq (+ 5 1)))
(+ (* 5 5) (* (+ 5 1) (+ 5 1)))
> 61

递归

  • 求绝对值
(define (abs a) 
            (if  (> a 0)
                 a
                 1 - a ))
(abs 1)
> 1
(abs -1)
> 1
  • 求一个正整数的阶层
f(n) = n!
  if n === 1,n = 1
  if n === 2,n = 1 * 2
  if n === 3,n = 1 * 2 * 3
  if n === n,n = 1 * 2 * 3 * ... (n - 1) * n
  
  if n === 1,n = 1
  if n === 2,n = fn(1) * 2
  if n === 3,n = fn(2) * 3
  if n === n,n = fn(n - 1) * n
(define (f n)
            (if (= n 1)
            1
            (* n (f (- n 1)))
)
  • 为什么递归叫做递归
(f 6)
(* 6 (f 5))
(* 6 (* 5 (f 4)))
(* 6 (* 5 (* 4 (f 3))))
(* 6 (* 5 (* 4 (* 3 (f 2)))))
(* 6 (* 5 (* 4 (* 3 (* 2 (f 1))))))
(* 6 (* 5 (* 4 (* 3 (* 2 1)))))
(* 6 (* 5 (* 4(* 3 2))))
(* 6 (* 5 (* 4 6)))
(* 6 (* 5 24))
(* 6 120)
> 720 
先递进全部代入 再 回归一步一步求值

迭代

  • 同样是求6的阶层
1! = 1
2! = 2 * 1!
3! = 3 * 2!
4! = 4 * 3!
5! = 5 * 4!
6! = 6 * 5!
f(6)
(j 1 1 6) // 第一个参数是结果 第二个参数是算的次数 第三个参数是要算多少次。
(j 2 2 6)
(j 6 3 6)
(j 24 4 6)
(j 120 5 6)
(j 720 6 6)
(j 720 7 6) // 因为第二参数 大于算的次数 所以结果就是 720

高阶函数

一个函数接受别人的函数,就叫高阶函数

相关文章

  • 递归,迭代,高阶函数

    代入求值 函数慢慢拆开 参数代入 递归 求绝对值 求一个正整数的阶层 为什么递归叫做递归 先递进全部代入 再 回归...

  • Kotlin (二)

    尾递归 高级函数中的block 高阶函数之迭代 函数引用 闭包 1、函数的运行时环境:2、持有函数的运行状态;3、...

  • Python基础知识详解

    函数可变参数 函数关键字参数 命名关键字参数 递归函数 尾递归函数优化 切片 迭代 列表迭代:字典迭代: 在这里小...

  • wangyanhua--python2

    基本函数的使用 匿名函数 常用系统高阶函数 高阶函数 常用系统高阶函数 Python递归 安装第三方库 三国小说人...

  • Python语法-函数进阶篇

    主要是对函数的一些补充内容,包括递归函数,常见内置函数和常见的高阶函数的使用 递归函数 和所有语言一样,递归函数说...

  • 递归函数

    递归函数定义:调用自身的函数叫做递归函数 递归函数的注意:至少有一个出口(返回),以免陷入死循环 递归和迭代的区别:

  • 迭代和递归的区别

    1) 递归中一定有迭代,但是迭代中不一定有递归,大部分可以相互转换。 2) 能用迭代的不用递归,递归调用函数,浪费...

  • 学习笔记系列——函数式编程

    人生苦短,我用python 高阶函数:一个函数接收另一个函数作为参数,这种函数称为高阶函数 map(函数,迭代对象...

  • 胡思乱想说递归-下

    递归,迭代与循环 先说一下递归,迭代和循环的意义吧 递归(recursion):指的是一个函数不断调用自身的行为 ...

  • Python ☞ day 4

    Python学习笔记之 (set)集合 & 迭代器 & 函数 & 匿名函数 & 高阶函数 set set:类似di...

网友评论

      本文标题:递归,迭代,高阶函数

      本文链接:https://www.haomeiwen.com/subject/ddxuiqtx.html