首页 > 其他 > 详细

递归思想(钻出牛角尖)

时间:2019-11-20 12:10:39      阅读:55      评论:0      收藏:0      [点我收藏+]

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

经典案例:

快速指数

目的:

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

规格说明:

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

整数幂的运算法则: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计算四次

 

 

 

    

 

 

 

 

 

 

 

递归思想(钻出牛角尖)

原文:https://www.cnblogs.com/zhifeiji822/p/11896532.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!