type
status
date
slug
summary
tags
category
icon
password
Property
C允许函数调用它自己,这种调用过程称为递归。
可以假设有一条函数调用链——
fun1()
调用fun2()
、fun2()
调用fun3()
、fun3()
调用fun4()
。当 fun4()
结束时,控制传回fun3()
;当fun3()
结束时,控制传回 fun2()
;当fun2()
结束时,控制传回fun1()
。递归的情况与此类似,只不过fun1()
、fun2()
、fun3()
和fun4()
都是相同的函数。尾递归
最简单的递归形式是把递归调用置于函数的末尾,即正好在 return 语句之前。这种形式的递归被称为尾递归(tail recursion),因为递归调用在函数的末尾。尾递归是最简单的递归形式,因为它相当于循环。
递归在处理倒序时非常方便(在解决这类问题中,递归比循环简单)。
编写一个函数,打印一个整数的二进制数。二进制表示法根据 2 的幂来表示数字:
递归既有优点也有缺点。优点是递归为某些编程问题提供了最简单的解决方案。缺点是一些递归算法会快速消耗计算机的内存资源。另外,递归不方便阅读和维护。