Saya baru di situs ini dan pertanyaan ini tentu saja bukan tingkat penelitian - tetapi oh well. Saya memiliki sedikit latar belakang dalam rekayasa perangkat lunak dan hampir tidak ada di CSTheory, tetapi saya merasa menarik. Untuk membuat cerita panjang pendek, saya ingin jawaban yang lebih rinci untuk yang berikut jika pertanyaan ini dapat diterima di situs ini.
Jadi, saya tahu bahwa setiap program rekursif memiliki analog berulang dan saya agak memahami penjelasan populer yang ditawarkan untuk itu dengan mempertahankan sesuatu yang mirip dengan "system stack" dan mendorong pengaturan lingkungan seperti alamat pengirim dll. Saya menemukan jenis gelombang tangan ini .
Menjadi sedikit lebih konkret, saya ingin (secara formal) melihat bagaimana seseorang membuktikan pernyataan ini dalam kasus di mana Anda memiliki fungsi memanggil rantai . Lebih lanjut, bagaimana jika ada beberapa pernyataan kondisional yang dapat menyebabkan F i membuat panggilan ke F j ? Yaitu, grafik panggilan fungsi potensial memiliki beberapa komponen yang sangat terhubung.
Saya ingin tahu bagaimana situasi ini dapat ditangani dengan membiarkan kami mengatakan beberapa konverter berulang untuk berulang. Dan apakah deskripsi handwavy yang saya sebutkan sebelumnya, cukup untuk masalah ini? Maksud saya lalu mengapa saya menemukan menghapus rekursi dalam beberapa kasus mudah. Secara khusus menghapus rekursi dari traversal pre-order dari pohon Binary benar-benar mudah - itu adalah pertanyaan wawancara standar tetapi menghilangkan rekursi jika post order selalu menjadi mimpi buruk bagi saya.
Apa yang sebenarnya saya tanyakan adalah pertanyaan
(1) Apakah benar-benar ada bukti yang lebih formal (meyakinkan?) Bahwa rekursi dapat dikonversi menjadi iterasi?
(2) Jika teori ini benar-benar di luar sana, lalu mengapa saya menemukan, misalnya, membuat iterasi preorder lebih mudah dan postorder begitu sulit? (selain kecerdasan saya yang terbatas)