函数递归概念
//递归就是函数自己调用自己 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main() { printf("hehe"); main(); return 0; } //陷入了死循环
递归例子
例1:阶乘计算
//算n的阶乘 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int Func(int i) { if (i == 0) return 1; else return (i * Func(i - 1)); } int main() { int i = 0; scanf("%d", &i); int a = Func(i); printf("%d", a); return 0; } //先递推到临界值,再回归。
例2:按顺序打印每一位
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> void Printf(int i) { if (i >= 9) Printf(i / 10); printf("%d", i % 10); } int main() { int i; scanf("%d", &i); Printf(i); return 0; }
例3:运行时堆栈
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int Func(int i) { printf("%d", i); if (i < 100000) Func(i+1); else printf("%d", i); return 0; } int main() { int i = 0; scanf("%d", &i); Func(i); return 0; } //需要运行的计算太大了,直接中途停止了。
递归误区
递归程序会不断的展开,在展开的过程中,我们很容易就能发现,在递归的过程中会有大量重复计算,⽽且递归层次越深,冗余计算就会越多,导致反而不能完成任务。
致谢
感谢您花时间阅读这篇文章!如果您对本文有任何疑问、建议或是想要分享您的看法,请不要犹豫,在评论区留下您的宝贵意见。每一次互动都是我前进的动力,您的支持是我最大的鼓励。期待与您的交流,让我们共同成长,探索技术世界的无限可能!