python中函数递归VS循环

简介: python中函数递归VS循环

一、函数递归的实现



函数是否可以做到类似于循环?

答案是肯定可以的。我们可以采用函数的递归算法。


什么是递归?

可以理解为在定义的函数内部调用函数自己,形成一个回路。既然形成了一个回路,那么必须要有一个退出的方式。而这种退出的方式一般都是采用条件判断来实现的。


下面我们举一个实际递归的例子

n=1

def digui(a):

   print(a)

   if(a>=10):

       return

   a+=1

   digui(a)


digui(n)


根据以上实际的例子,我们总结出函数递归使用的注意点:

  1. 函数的自我调用。
  2. 一定要有退出条件。
  3. 尽可能少用递归,因为非常消耗内存。


出题:阶层的计算,计算10!的结果,采用函数递归的方式进行计算。

如果您没有碰到过阶层的概念,请试着对以下例子进行理解。举例:

0!=1

1!=1*1

2!=2*1

3!=3*2*1

4!=4*3*2*1

。。。

10!=10*9*8*…*2*1

(此题答案在本文最后公布)


二、总结强调



1.掌握递归的定义方法。

2.掌握递归的注意事项。

3.掌握递归与for循环的联系与区别。


本节代码:

#for循环举例
# for i in range(1,11):
#     print(i)
#利用函数递归来输出1-1000之间的数字
import sys #导入sys库
sys.setrecursionlimit(8000) #设置递归深度
n=1
def digui(a):
    print(a)
    if(a>=1000):
        return
    a+=1
    digui(a)
digui(n)

答案公布:

#定义一个计算阶层的回调函数
def jieceng(n):
    if(n==1):
        return 1
    else:
        return n*jieceng((n-1))
print(jieceng(10))

执行结果:

3628800
相关文章
|
4天前
|
数据挖掘 数据处理 索引
python常用pandas函数nlargest / nsmallest及其手动实现
python常用pandas函数nlargest / nsmallest及其手动实现
20 0
|
4天前
|
算法 数据挖掘 数据处理
使用 Python 循环创建多个列表
在Python中,动态创建多个列表对于数据处理和算法实现十分有用。本文介绍了四种方法:1) 列表推导式,如创建偶数和奇数列表;2) 使用循环和`append()`,示例为生成斐波那契数列;3) 结合字典与循环,按条件(如正负数)分组;4) 列表生成器,用于一次性生成多组随机数列表。这些方法有助于提高代码效率和可读性。
15 1
|
9天前
|
Serverless 开发者 Python
《Python 简易速速上手小册》第3章:Python 的函数和模块(2024 最新版)
《Python 简易速速上手小册》第3章:Python 的函数和模块(2024 最新版)
40 1
|
9天前
|
索引 Python
Python高维变量选择:SCAD平滑剪切绝对偏差惩罚、Lasso惩罚函数比较
Python高维变量选择:SCAD平滑剪切绝对偏差惩罚、Lasso惩罚函数比较
11 0
|
10天前
|
机器学习/深度学习 存储 测试技术
使用PYTHON中KERAS的LSTM递归神经网络进行时间序列预测
使用PYTHON中KERAS的LSTM递归神经网络进行时间序列预测
19 0
|
11天前
|
Python
python学习-函数模块,数据结构,字符串和列表(下)
python学习-函数模块,数据结构,字符串和列表
55 0
|
11天前
05-python之函数-函数的定义/函数的参数/函数返回值/函数说明文档/函数的嵌套使用/函数变量的作用域
05-python之函数-函数的定义/函数的参数/函数返回值/函数说明文档/函数的嵌套使用/函数变量的作用域
|
11天前
|
Python
python-基本类型,运算,循环
python-基本类型,运算,循环
29 0
|
12天前
|
Python
python学习10-函数
python学习10-函数
|
12天前
|
Python
python学习4-内置函数range()、循环结构、循环控制语句、else语句、嵌套循环
python学习4-内置函数range()、循环结构、循环控制语句、else语句、嵌套循环