C语言高级主题深度解析
1. 递归方法
递归是一种强大的编程技术,适用于那些可以将大任务分解为一个或多个与原任务相似的小任务的问题。以阶乘问题为例,3的阶乘是 3 * 2 * 1
,4的阶乘是 4 * 3 * 2 * 1
,可以改写为 4 * 3!
。以下是一个计算阶乘的递归函数:
long int Factorial( long int num )
{
if ( num > 1 )
num *= Factorial( num - 1 );
return( num );
}
1.1 递归过程分析
当调用 Factorial(3)
时,过程如下:
1. 首次调用 Factorial(3)
,由于 3 > 1
,执行 num *= Factorial( num - 1 )
,即调用 Factorial(2)
。
2. 调用 Factorial(2)
,因为 2 > 1
,再次执行 num *= Factorial( num - 1 )
,调用 Factorial(1)
。
3. 调用 Factorial(1)
,此时