Bagaimana cara mensimulasikan panggilan pengembalian rekursif DFS menggunakan iterasi?

Saya memahami kode DFS berulang di sini. Namun, menurut saya ketika kita menggunakan iterasi, kita hanya dapat mensimulasikan panggilan rekursif DFS maju, dan bukan pernyataan return. Misalnya, jika saya ingin menghitung N! menggunakan versi solusi rekursif yang disimulasikan iterasi, kami tidak dapat mencapainya.

Apakah saya benar dengan kesimpulan ini? Contoh tandingan akan sangat dihargai.


person user3243499    schedule 07.09.2017    source sumber


Jawaban (1)


Saya tidak mengerti di mana Anda bingung -- yang mungkin disebabkan oleh kebingungan Anda. Kata serumpun berulang dari return tidak eksplisit; itu proses yang berbeda. Alur kontrolnya adalah dengan kembali ke puncak loop. Aliran data bergantung pada algoritme: Anda mengeluarkan item dari tumpukan, atau menyimpan hasil dalam array, misalnya.

Jika "faktorial ke-n" adalah N matematika! Dalam komputasi, return iteratif hanyalah iterasi loop berikutnya, dengan sebagian produk disimpan dalam variabel lokal:

# value of n is given
prod = 1

for i in range(n, 1, -1):
    prod *= i

# yield prod as result
person Prune    schedule 08.09.2017