递归的优缺点是什么?
Jun 13, 2016 am 11:05 AM递归的优缺点有:1、代码更简洁清晰,可读性更好;2、时间和空间消耗比较大;3、很多计算都是重复的;4、调用栈可能会溢出。
程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。
一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。
递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。
递归的优缺点
优点:代码更简洁清晰,可读性更好
递归的话函数调用是有开销的,而且递归的次数受堆栈大小的限制。
缺点:
时间和空间消耗比较大。每一次函数调用都需要在内存栈中分配空间以保存参数,返回地址以及临时变量,而且往栈里面压入数据和弹出都需要时间。
另外递归会有重复的计算。递归本质是把一个问题分解为多个问题,如果这多个问题存在重复计算,有时候会随着n成指数增长。斐波那契的递归就是一个例子。
递归还有栈溢出的问题,每个进程的栈容量是有限的。由于递归需要系统堆栈,所以空间消耗要比非递归代码要大很多。而且,如果递归深度太大,可能系统撑不住。
更多相关知识,请访问 PHP中文网!!

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Pelaksanaan rekursif fungsi C++: Adakah terdapat had untuk kedalaman rekursif?

Adakah ungkapan lambda C++ menyokong rekursi?

Program rekursif untuk mencari elemen minimum dan maksimum tatasusunan dalam C++

Kira bilangan kejadian subrentetan secara rekursif dalam Java

Pelaksanaan rekursif fungsi C++: Analisis perbandingan algoritma rekursif dan bukan rekursif?

Bagaimana untuk menyelesaikan ralat kedalaman rekursi maksimum Python?

Penjelasan terperinci tentang rekursi fungsi C++: aplikasi rekursi dalam pemprosesan rentetan

Panduan pemula untuk rekursi C++: Membina asas dan membangunkan intuisi
