【数据结构学习1】-递归与循环实现区别(python实例)

递归与循环实现区别(python实例)

  • 文档说明
  • 递归与循环
    • 数的阶乘
      • 递归实现
      • 循环实现
    • 斐波那契数列
      • 递归实现
      • 循环实现

文档说明

编辑于2022年12月23日
本文档用于记录学习数据结构过程中的一些实例,加深对数据结构本身的了解。
本次文章记录关于递归实现与循环实现的区别,从算法本身理解不同的数据结构,其实现的结果虽然相同,但效率上可能不同。这就是数据结构的魅力所在

递归与循环

在学习数据结构前,通过了解递归与循环的区别了解代码结构对运行效率的影响
循环实现:在函数定义中,重复实现某部分语句
递归实现:递归指的是在函数的定义中使用函数自身的方法,是一种特殊的循环

数的阶乘

分别使用递归与循环实现数的阶乘

递归实现

比如求5的阶乘

def factorial(i):
    if i<=1:
        return i
    else:
        return i*factorial(i-1)
print(factorial(5))
120

循环实现

求5的阶乘

def factorial(n):
    value=1
    for i in range(1,n,1):
        value=value*(i+1)
    return value
factorial(5)
120

斐波那契数列

斐波那契数列指的是这样一个数列:1,1,2,3,5,8,13,21,34,55,89…
在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n ≥ 2,n ∈ N*)
这个数列从第3项开始,每一项都等于前两项之和
下面分别使用递归与循环实现斐波那契数列

递归实现

def recur_fibo(n):
    '''
    递归函数输出斐波那契数列
    '''
    if n<=1:
        return n
    else:
        return(recur_fibo(n-1) + recur_fibo(n-2))
# 获取用户输入
nterms = int(input("您要输出几项? "))
# 检查输入的数字是否正确
if nterms <= 0:
    print("请输入正数")
else:
    print("斐波那契数列:")
    for i in range(0,nterms,1):
        print(recur_fibo(i))
您要输出几项? 11
斐波那契数列:
0
1
1
2
3
5
8
13
21
34
55

循环实现

代码思路:已知这个数列从第3项开始,每一项都等于前两项之和,那么只需要在循环过程中一直更新前两项即可

def recur_fibo(n):
    '''
    循环输出斐波那契数列
    n为项数
    代码思路:
    已知这个数列从第3项开始,每一项都等于前两项之和,那么只需要在循环过程中一直更新前两项即可
    '''
    sequence_L=[]#存储数列的各项值
    value0=0
    value1=1
    for i in range(0,n+1,1):
        if i<=1:#对于前两项,数列的值等于其项数
            value=i
            sequence_L.append(value)
        else:#从第三项开始,每一项都等于前两项之和
            value=value0+value1
            sequence_L.append(value)
            value0=value1#更新前面两项的值
            value1=value
    #print(sequence_L)
    return sequence_L
# 获取用户输入
nterms = int(input("您要输出几项? "))
# 检查输入的数字是否正确
if nterms <= 0:
    print("请输入正数")
else:
    print("斐波那契数列:")
    for i in range(0,nterms,1):
        sequence_L=recur_fibo(nterms)
        print(sequence_L[i])
您要输出几项? 11
斐波那契数列:
0
1
1
2
3
5
8
13
21
34
55

你可能感兴趣的:(数据结构,python,python,数据结构,学习)