01/10/2018, 09:46

Double Recursion

Chào mọi người ,mình muốn hỏi về double recursion về cách thức hoạt động và trình tự xử lý của nó
Mình có đoạn code sau,trích từ quyển thinkpython ,và hàm này đã tự gọi chính nó ở dòng 7 , rồi sau đó tiếp tục gọi ở dòng 9, vậy ở đây chính xác nó đã làm gì trong các dòng đó và trình tự chạy như nào ạ ?:

def draw(t, length, n):
    if n == 0:
      return
    angle = 50
    fd(t, length*n)
    lt(t, angle) 
    draw(t, length, n-1)
    rt(t, 2*angle)
    draw(t, length, n-1)
    lt(t, angle)
    bk(t, length*n)
Henry viết 11:47 ngày 01/10/2018

hồi trước e có test thì ra được điều này. Cũng không chắc chắn lắm
ví dụ e đặt như thế này

def a(n): #đặt này là a1
    if n == 0:
        return n
    a(n - 1) #này là a2
    a(n - 1) #này là a3

thì khi chạy a1 nó sẽ chạy tới a2, a2 này sẽ chạy và cứ lặp lại a2 tới lúc nào mà n == 0 tiếp đến nó trả về và chạy a3. a3 sẽ chạy ngược lại. Và a3 cũng sẽ chạy luôn cái a2. Cũng chả biết giải thích sao nữa. Hồi trước e test như thế này.

def a(n):
    if n == 0:
        print('n = 0')
        return n
    print('1. n =',n)
    a(n - 1)
    print('2. n =',n)
    a(n - 1)

Kết quả là

Thật sự thì e cũng không chắc chắn là mình hiểu. Nên cũng sẽ lót dép hóng ạ

Thành Long viết 12:02 ngày 01/10/2018

Sao em thấy em hỏi mà có mình bác thấy bài viết hay sao ấy :’( , dù gì cũngcảm ơn đóng góp của bác

Henry viết 11:54 ngày 01/10/2018

chắc chưa ai đi làm về

Bài liên quan
0