>  기사  >  백엔드 개발  >  Python 풀 스택 로드 시리즈 재귀

Python 풀 스택 로드 시리즈 재귀

高洛峰
高洛峰원래의
2017-02-09 10:44:161242검색

소위 재귀란 실제로 함수 자체가 지정된 조건이 충족될 때까지 함수를 호출한 후 계층별로 함수를 종료하는 것입니다. 예를 들면

옛날에 산이 있었는데, 그리고 산속에 절이 있었는데, 그 절에는 아이를 낳고 있던 늙은 스님이 있었습니다. 스님이 이야기를 하고 계셨어요! 무슨 이야기인가요? “옛날에 산이 있었고, 그 산에 사찰이 있었습니다. 절에 늙은 스님이 있었는데, 그가 젊은 스님에게 이야기를 들려주고 있었습니다! 무슨 이야기일까요? , 산이 있고, 산속에 사찰이 있었는데, 그 사찰에 늙은 스님이 있었는데, 어린 스님에게 무슨 이야기를 들려주던지요.... '"

  • 함수를 사용하여 피보나치 수열 작성

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368

피보나치 수열은 다음과 같습니다. 앞의 두 숫자를 더해 다음 숫자를 얻고

코드는 다음과 같습니다

#!/usr/bin/env python
# _*_ coding: utf-8 _*_

def Counter(n1, n2):
    if n1 > 10000:  # 当要计算的值大于10000就退出
        return
    print("Counter:", n1)  # 输出当前计算到那个值了
    n3 = n1 + n2  # 第一个值加上第一个值等于第三个值
    Counter(n2, n3)  # 调用计数器函数,此时第一个值是调用函数传过来的最后一个值,而第二个值是计算出来的第三个值


Counter(0, 1)  # 调用计数器函数

출력 결과

/usr/bin/python3.5 /home/ansheng/Documents/PycharmProjects/blogcodes/斐波那契.py
Counter: 0
Counter: 1
Counter: 1
Counter: 2
Counter: 3
Counter: 5
Counter: 8
Counter: 13
Counter: 21
Counter: 34
Counter: 55
Counter: 89
Counter: 144
Counter: 233
Counter: 377
Counter: 610
Counter: 987
Counter: 1597
Counter: 2584
Counter: 4181
Counter: 6765

Process finished with exit code 0
  • 재귀를 사용하여 피보나치 수열의 10번째 숫자를 구하고 호출자에게 값을 반환합니다

코드:

#!/usr/bin/env python
# _*_ coding: utf-8 _*_

def Counter(Index, Start, End):
    print("第%d次计算,第一个数字是%d,第二个数字是%d" % (Index, Start, End))
    if Index == 10:  # 如果要计算的值是10就退出
        return Start
    N = Start + End  # N等于第一个数加上第二个数
    Number = Counter(Index + 1, End, N)  # 继续调用计数器函数,End相当与传给函数的第一个数,N是传给函数的第二个数
    return Number


result = Counter(1, 0, 1)
print("得出的数字是:", result)

출력 결과

/usr/bin/python3.5 /home/ansheng/Documents/PycharmProjects/blogcodes/递归.py
第1次计算,第一个数字是0,第二个数字是1
第2次计算,第一个数字是1,第二个数字是1
第3次计算,第一个数字是1,第二个数字是2
第4次计算,第一个数字是2,第二个数字是3
第5次计算,第一个数字是3,第二个数字是5
第6次计算,第一个数字是5,第二个数字是8
第7次计算,第一个数字是8,第二个数字是13
第8次计算,第一个数字是13,第二个数字是21
第9次计算,第一个数字是21,第二个数字是34
第10次计算,第一个数字是34,第二个数字是55
得出的数字是: 34

Process finished with exit code 0

원본 텍스트 링크


소위 재귀는 실제로 지정된 함수가 나올 때까지 함수를 호출하는 함수 자체입니다. 조건이 끝나면 함수를 계층별로 종료합니다. 예를 들어,

옛날에 산이 있었고, 그 산속에 절이 있었는데, 그 절에 늙은 스님이 있었는데, 젊은 스님에게 이야기를 들려주고 계셨어요! 무슨 이야기인가요? “옛날에 산이 있었고, 산 속에 절이 있었습니다. 절에 늙은 스님이 있었는데, 젊은 스님에게 이야기를 들려주고 있었습니다! 무슨 이야기일까요? 산이 있고, 그 산에 절이 있었는데, 그 절에 늙은 스님이 있었는데, 어린 스님에게 이야기를 들려주더군요.... '"

  • 함수를 사용하여 피보나치 수열 작성

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368

피보나치 수열은 다음과 같습니다. 앞의 두 숫자를 더해 다음 숫자를 얻고

코드는 다음과 같습니다

#!/usr/bin/env python
# _*_ coding: utf-8 _*_

def Counter(n1, n2):
    if n1 > 10000:  # 当要计算的值大于10000就退出
        return
    print("Counter:", n1)  # 输出当前计算到那个值了
    n3 = n1 + n2  # 第一个值加上第一个值等于第三个值
    Counter(n2, n3)  # 调用计数器函数,此时第一个值是调用函数传过来的最后一个值,而第二个值是计算出来的第三个值


Counter(0, 1)  # 调用计数器函数

출력 결과

/usr/bin/python3.5 /home/ansheng/Documents/PycharmProjects/blogcodes/斐波那契.py
Counter: 0
Counter: 1
Counter: 1
Counter: 2
Counter: 3
Counter: 5
Counter: 8
Counter: 13
Counter: 21
Counter: 34
Counter: 55
Counter: 89
Counter: 144
Counter: 233
Counter: 377
Counter: 610
Counter: 987
Counter: 1597
Counter: 2584
Counter: 4181
Counter: 6765

Process finished with exit code 0
  • 재귀를 사용하여 피보나치 수열의 10번째 숫자를 구하고 호출자에게 값을 반환합니다.

코드:

#!/usr/bin/env python
# _*_ coding: utf-8 _*_

def Counter(Index, Start, End):
    print("第%d次计算,第一个数字是%d,第二个数字是%d" % (Index, Start, End))
    if Index == 10:  # 如果要计算的值是10就退出
        return Start
    N = Start + End  # N等于第一个数加上第二个数
    Number = Counter(Index + 1, End, N)  # 继续调用计数器函数,End相当与传给函数的第一个数,N是传给函数的第二个数
    return Number


result = Counter(1, 0, 1)
print("得出的数字是:", result)

출력 결과

/usr/bin/python3.5 /home/ansheng/Documents/PycharmProjects/blogcodes/递归.py
第1次计算,第一个数字是0,第二个数字是1
第2次计算,第一个数字是1,第二个数字是1
第3次计算,第一个数字是1,第二个数字是2
第4次计算,第一个数字是2,第二个数字是3
第5次计算,第一个数字是3,第二个数字是5
第6次计算,第一个数字是5,第二个数字是8
第7次计算,第一个数字是8,第二个数字是13
第8次计算,第一个数字是13,第二个数字是21
第9次计算,第一个数字是21,第二个数字是34
第10次计算,第一个数字是34,第二个数字是55
得出的数字是: 34

Process finished with exit code 0

For Python 풀스택 시리즈의 더 많은 재귀 관련 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.