• 递归思想(钻出牛角尖)


    递归思想:函数中调用函数并使用返回值

    经典案例:

    快速指数

    目的:

    求值的整数次幂的聪明算法

    规格说明:

    利用递归的方法减少运算计算出整数次幂

    整数幂的运算法则:a**4=a x a x a x a 也可以写成a**4=(a**2) x( a**2),如果是奇数幂的:a**5=(a**2) x( a**2)x a

    我们可以利用这种关系作为递归函数的基础:只需要找到一个合适的基本情况。注意,

    计算第 n 次幂需要计算两个较小的幂(n // 2)。如果我们继续使用越来越小的 n 值,它将最 终达到 0(整数除法中 1 // 2 = 0)。

    正如你从数学课中学到的,对于任何值 a(0 除外),a0 = 1。这就是基本情况。

    设计:

    创建函数:recPower,需要输入求幂的整数,和求的整数幂次数(s,n)

    判断如果n是0的话,直接返回1

    递归函数(拆分计算每个函数的值,用来最终计算整数幂)计算每次递归的值并返回到factor

    判断奇数偶数,如果奇数算法为factor*factor*a,如果偶数:factor*factor

    代码实现:

    def recPower(s,n):

      if n==0:

        return 1

      else;

        factor=recPower(s,n//2)

        if n%2 == 0:

          return factor*factor

        else:

          return factor*factor

    牛角尖问题:每次函数返回值到哪了?

    递归过程:factor=recPower(2,4//2)[factor=4]——》recPower(2,2//2)[factor=2]——》recPower(2,1//2)[factor=1]

    牛角尖答案:每次返回的值都是factor,factor计算四次

        

  • 相关阅读:
    Docker--使用
    腾讯云发送短信
    Mysql--查询基础
    flask10--数据库链接池(通用),wtforms
    Flask11--Flask-script,sqlalchemy
    序列化 json
    第五章-算术运算符
    计算机网络自顶向下的方法-第二章 应用层
    第三章-数据类型
    第三章-常量和宏定义
  • 原文地址:https://www.cnblogs.com/zhifeiji822/p/11896532.html
Copyright © 2020-2023  润新知