摘要:递归是我们的老朋友了,无论是程序设计基础课程还是离散结构课程都讲到过它,但这一次学了栈之后再来体会系统是怎么处理我们的递归函数的。
一.代码块
1)累加的递归实现
实际上,递加或阶乘递归确实是我们接触的最简单的递归函数了,递归的本质就是一直访问要求函数的上一个函数值,例如要求addTo(3),就访问到addTo(2),用addTo(2)+3就请求到addTo(3)的值了,依此类推。
值得注意的是,我们在用递归的时候,一定要写好终止条件,不然递归函数会一直调用本身。
int addTo(int paraN)
{
int tempSum;
if(paraN <= 0)
{
printf("return 0\r\n");
return 0;
}
else
{
tempSum = addTo(paraN-1) + paraN;
printf("return %d\r\n",tempSum);
return tempSum;
}
}
2)汉诺塔的递归
我这里的汉诺塔和老师的稍稍不一样,我的是从A到C,老师是从A到B。
我们重点要理解传入参数,第一个是圆盘数很好理解。第二个,第三个,第四个&