Rumah >pembangunan bahagian belakang >C++ >Adakah Pengoptimuman Ekor-Rekursi Berfungsi dalam Penyusun C Moden?

Adakah Pengoptimuman Ekor-Rekursi Berfungsi dalam Penyusun C Moden?

DDD
DDDasal
2024-12-22 08:42:10573semak imbas

Does Tail-Recursion Optimization Work in Modern C   Compilers?

Pengoptimuman Pengulangan Ekor dalam Penyusun C

Pengoptimuman rekursi ekor meningkatkan kecekapan program dengan menggantikan panggilan fungsi rekursif dengan lompatan. Anehnya, walaupun terdapat kelebihannya yang jelas, pengaturcara sering mempersoalkan sama ada ia dilaksanakan dalam penyusun C/C.

Pelaksanaan dalam Penyusun Moden

Bertentangan dengan persepsi biasa, semua penyusun C arus perdana moden melakukan ekor pengoptimuman panggilan, termasuk rekursif bersama panggilan.

Arahan Pengkompil

Untuk mendayakan pengoptimuman rekursi ekor, cuma aktifkan pengoptimuman pengkompil untuk kelajuan:

  • MSVC: /O2 atau /Ox
  • GCC, Dentang, ICC: -O3

Menyemak Status Pengoptimuman

Untuk mengesahkan sama ada pengkompil telah melakukan pengoptimuman, gunakan salah satu kaedah ini:

  • Lakukan panggilan yang sebaliknya akan menyebabkan limpahan tindanan.
  • Periksa pemasangan output.

Pertimbangan dan Kaveat

  • Pemusnah mungkin mengganggu pengoptimuman pengulangan ekor.
  • Panggilan ekor tidak boleh dilakukan jika mana-mana pemusnah perlu dilaksanakan selepas panggilan.

Atas ialah kandungan terperinci Adakah Pengoptimuman Ekor-Rekursi Berfungsi dalam Penyusun C Moden?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn