当前位置:   article > 正文

[小甲鱼] 零基础入门python第022讲课后测试题及答案:函数:递归是神马_小甲鱼python第二版课后作业及答案

小甲鱼python第二版课后作业及答案

测试题:
0.递归在编程上的形式是如何表现的呢?
   表现为函数调用函数本身

  1. def factorial(n):
  2. if n==1:
  3. return 1
  4. else:
  5. return n*factorial(n-1)
  6. number = int(input('请输入一个整数:'))
  7. result = factorial(number)
  8. print('%d的阶乘是%d' %(number,result))

1.递归必须满足那两个基本条件?
  一、函数调用本身
  二、设置了正确的返回条件
2.思考一下,按照递归的特性,在编程中有没有不得不使用递归的情况?
       答:例如汉诺塔,目录索引(因为你永远不知道这个目录里面是否还有目录),快速排序(二十世纪十大算法之一),树结构的定义等如果使用递归,会事半功倍,否则会导致程序无法实现或相当难以理解。
3.用递归去计算阶乘问题或菲波那切数列是很糟糕的算法,你知道为什么吗?
   普通程序员用迭代,天才程序员用递归,不要简单觉得递归好用,而是使用递归需要格外小心,设置正确的返回条件
   因为递归的实现是函数调用本身,每次函数的调用都需要进行压栈、出栈、保存和回复寄存器的栈操作,所以在这上边是非常消耗时间和空间的。
4.请聊一聊递归的优缺点(无须官方陈词,想到什么写什么就可以)
   优点:复杂的问题简单化,使得逻辑便于理解,程序算法简单
   缺点:会占用更多的资源,使用不当还会造成程序死机
5.拿手机拍一张‘‘递归自拍照片’’

动动手:
0.使用递归编写一个power()函数模拟内建函数pow(),即power(x,y)为计算并返回x的y次幂的值

  1. def power(x,y):
  2. if y==0:
  3. return 1
  4. else:
  5. return x*power(x,y-1)
  6. number = int(input('请输入一个实数:'))
  7. y_power = int(input('请输入幂值:'))
  8. print(power(number,y_power))

1.使用递归编写一个函数,利用欧几里得算法求最大公约数,例如gcd(x,y)返回值为参数x和参数y的最大公约数。

  1. def gcd(a,b):
  2. r=a%b
  3. if r==0:
  4. return b
  5. else:
  6. return gcd(b,r)
  7. a=int(input('请输入一个正整数被除数:'))
  8. b=int(input('请输入一个正整数除数:'))
  9. print('gcd是:',gcd(a,b))

 

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号