递归与迭代 | 您所在的位置:网站首页 › 递归和非递归的区别怎么回答 › 递归与迭代 |
一、递归 递归即函数在执行时会调用它本身。 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值作为下一次函数的参数 |
CopyRight 2018-2019 实验室设备网 版权所有 |