Tidak , tapi bukan karena alasan yang diberikan orang lain. Perbedaan antara rekursi dan induksi bukanlah rekursi "top-down" dan induksi "bottom-up." Induksi adalah isomorfik terhadap sesuatu yang disebut "rekursi primer," tetapi, secara umum, rekursi lebih kuat daripada induksi .
Perbedaan antara top-down dan bottom-up adalah sepele - program rekursif primitif "top-down" apa pun dapat dikonversi secara mekanis menjadi sesuatu yang "bottom-up". Bahkan, setiap bukti dengan induksi dapat diubah menjadi program rekursif. Dalam kerangka kalkulus konstruksi induktif, jika Anda ingin membuktikan bahwa setiap bilangan alami adalah populasi, Anda akan menuliskannya sebagai fungsi yang membangun bukti bahwa n merupakan populasi dengan membuat panggilan rekursif untuk membangun bukti yang tidak 1 adalah froopulous.
Faktor kunci dari induksi adalah bahwa hal-hal didefinisikan dalam hal yang lebih kecil, dan mereka "keluar" setelah banyak langkah. Bilangan natural bersifat induktif karena setiap natural adalah 0, atau penerus natural yang lebih kecil. Daftar bersifat induktif karena setiap daftar kosong, atau dapat dipecah ("dibuka") menjadi elemen dan daftar yang lebih kecil.
Kadang-kadang program rekursif tidak ditulis dalam hal yang lebih kecil. Misalnya, ambil fungsi Collatz ini:
fun collatz(n)
if n <= 1
return 0;
else if n % 2 == 0
return 1 + collatz(n / 2)
else
return 1 + collatz(3 * n + 1)
end
Fungsi ini tidak berjalan dari atas ke bawah atau dari bawah ke atas, dan karenanya tidak induktif terhadap bilangan asli.
Mungkin ada pemesanan untuk memperlakukannya secara induktif, tetapi untuk sebagian besar hal tidak mungkin. Fungsi lebih dari aliran tak terbatas adalah contoh yang bagus. Faktanya, stream adalah contoh prototipe dari tipe "coinductive".
"Yayasan Praktis untuk Bahasa Pemrograman" karya Bob Harper, tersedia online gratis, memiliki pengantar yang bagus untuk tipe induktif, koinduktif, dan rekursif.