礼品代发网

礼品代发网

收录130107113题,礼品代发网免费搜题解答

今日已更新0道题

单片机c语言中如何递归调用函数-c语言函数递归调用例子

2025-11-08 05:49:25  

单片机c语言中如何递归调用函数-c语言函数递归调用例子

优质解答

单片机C语言里递归就是函数自己给自己打电话,比如算阶乘的时候,函数自己调用自己直到次数到零。比如写个函数算5的阶乘,先算5乘4的阶乘,再算4乘3的阶乘,这样一层层往下叫,直到算1的阶乘返回1。每次调用都会在内存里留个位置存当前结果,就像叠积木一样,层数越多积木堆越高。但单片机内存小,如果叠太高会掉下来,这就是栈溢出。

为什么这样设计呢?因为递归像分蛋糕,每次切一半递下去。比如算斐波那契数列,递归版要算n-1和n-2两个数,每个数又继续拆解,这样时间复杂度会变成O(2^n),而循环版只要O(n)。比如n=10时,递归要算2^10=1024次,循环只要10次。但递归省代码,像写树状结构程序更直观。不过单片机通常用循环,因为内存有限,比如STM32F103的堆栈空间才2KB,如果递归调用20层就会占满,导致程序死机。所以用递归要算好层数,比如延时函数用递归调5次,每次延时1秒,总延时5秒,比写5次while循环更省代码。

本题链接:

递归调用单片机C语言栈溢出