Python递归和循环的区别(python递归和循环哪个快)

http://www.itjxue.com  2023-02-06 02:23  来源:未知  点击次数: 

Python递归和循环的区别

如果一个函数在内部调用自己,就是递归函数。比如从1加到100,这个digui函数中引用了digui(n + 1)。

def?digui(n):

????if?n?==?100:

????????return?n

????return?n?+?digui(n?+?1)

print(digui(1))

循环在哪里都可以,也可以不涉及函数,也可以在函数内部,比如从1打印到100。

x=1

while?x100:

????x=x+1

????print(x)

这两个东西,主要是根据需要应用。

如何理解python中的递归函数

递归式方法可以被用于解决很多的计算机科学问题,因此它是计算机科学中十分重要的一个概念。

绝大多数编程语言支持函数的自调用,在这些语言中函数可以通过调用自身来进行递归。计算理论可以证明递归的作用可以完全取代循环,因此在很多函数编程语言(如Scheme)中习惯用递归来实现循环。

计算机科学家尼克劳斯·维尔特如此描述递归:

递归的强大之处在于它允许用户用有限的语句描述无限的对象。因此,在计算机科学中,递归可以被用来描述无限步的运算,尽管描述运算的程序是有限的。

python 2 递归函数和其它语言,基本没有差别,只是不支持尾递归。无限递归最大值为固定的,但可以修改。

作者:黄哥

Python中迭代和递归的区别

在函数内部,调用函数自身的编程技巧称为递归( recursion)

递归是要干活的,需要完成任务。

利用 for 循环来遍历一个列表(list)或元组(tuple),将值依次取出,这种方法我们称为迭代。

而迭代,只出工,不出力。

python循环、递归

for 变量 in range(次数):被执行的语句? ? ? ? ? ? ? ? ? ? ? ?变量:表示每次循环的次数,0-1之间

range(n)n表示产生0到n-1的整数序列共N个? ? ? ? ? ? ? ?range(m,n)? 产生m到n-1的整数序列,共n-m个

循环for语句? :for 循环变量 in遍历结构:语句体1? else:语句体2?

无限循环: while条件: 语句块

while 条件:语句体1 else: 语句体2

循环保留字:break? ? ?continue

方法1:from random import random

from time import perf_counter

DARTS=1000

hits=0.0

start =perf_counter()

for i in range(1,DARTS+1):

? ? x,y=random(),random()

? ? dist=pow(x**2+y**2,0.5)

? ? if dist=1.0:

? ? ? ? hits =hits+1

? ? pi=4*(hits/DARTS)

? ? print("圆周率是:{}".format(pi))

? ? print("运行时间是{:.5f}s".format(perf_counter()-start))

方法2:

pi=0

n=100

for k in range(n):

? ? pi += 1/pow(16,k)*(\

? ? ? ? 4/(8*k+1)-2/(8*k+4) - \

? ? ? ? 1/(8*k+5) - 1/(8*k+6))

print("圆周率值是:{}".format(pi))

def 函数名 (0个或者多个):函数体? renturn 返回值

def 函数名 (非可选参数,可选参数):函数体? renturn 返回值

参数传递的两种方式:位置传递,名称传递

科赫雪花:

import turtle

def koch(size,n):

? ? if n==0:

? ? ? ? turtle.fd(size)

? ? else:

? ? ? ? for angle in [0,60,-120,60]:

? ? ? ? ? ? turtle.left(angle)

? ? ? ? ? ? koch(size/3,n-1)

def main():

? ? turtle.setup(400,200)

? ? turtle.penup()

? ? turtle.pendown()

? ? turtle.pensize(2)

? ? l=3

? ? koch(600,l)

? ? turtle.right(120)

? ? turtle.pencolor('blue')

? ? koch(600,l)

? ? turtle.right(120)

? ? turtle.pencolor('red')

? ? koch(600,l)

? ? turtle.speed(3000)

? ? turtle.hideturtle()

main()

阶乘:

def fact(n):

? ? s=1

? ? for i in range(1,n+1):

? ? ? ? s*=i

? ? return s

c=eval(input("从键盘输入一个数字"))

print("阶乘结果",fact(c))

(责任编辑:IT教学网)

更多

推荐网页制作视频教程文章