一、递归 递归即函数在执行时会调用它本身。 1.请用递归法打印整数的每一位 假设输入整数1234,把每一位打印出来为1 2 3 4 (1)思路: 要先把1打印出来则打印1的函数应该被最后调用
一、递归
递归即函数在执行时会调用它本身。
1.请用递归法打印整数的每一位
假设输入整数1234,把每一位打印出来为1 2 3 4
(1)思路:
要先把1打印出来则打印1的函数应该被最后调用,最先执行完毕。
1234%10=4 1234/10=123
123%10=3 123/10=12
12%10=2 12/10=1
1%10=1 1/10=0
(2)代码实现:
void print_every(int numb) {
int remainder = numb % 10;
numb = numb / 10;
if (numb > 0) {
print_every(numb);
}
printf("%d ", remainder);
}
int main() {
int numb = 0;
scanf("%d", &numb);
print_every(numb);
return 0;
}
(3)递归的栈溢出
内存可分为栈区,堆区,静态区,其中栈区负责存储局部变量和函数形参,用递归的方式反复调用函数,可能会导致栈溢出(stack overflow)
二、迭代
迭代即每一次迭代的结果会作为下一次迭代的初始值
如之前的链式printf
链式printf_wx645804b23d0b2的技术博客_51CTO博客
三、总结
递归是函数执行过程中调用它本身
迭代是把上一次函数的return值作为下一次函数的参数
【文章原创作者:韩国高防服务器 http://www.558idc.com/krgf.html 网络转载请说明出处】