王尘宇王尘宇

研究百度干SEO做推广变成一个被互联网搞的人

c语言阶乘代码怎么写(最简单的c语言程序)

什么是递归?

要说到递归如果不说栈的话,我觉得有点不合适,递归特点就是不断的调用同一个函数,如果这个函数没有一个递归界限,那么就是死循环了。所以讨论递归,就必须要讨论递归的界限,就是限定这个递归调用多少次。

我们先来看一个例子:

#include "stdio.h"

int digui(unsigned long count ) {
	if(count > 0){
		count --;
		printf("%d \n",count);
		digui(count);
	}
	return 1;
}

int main() {
	digui(10);
	return (100);
}

这个递归函数的限定判读是:

if(count > 0){

所以,它的调用顺序可以用下面这个图示来说明:

c语言阶乘代码怎么写(最简单的c语言程序)

 

这个过程叫做递去,也就是压栈的过程,既然有压栈的过程,那么就有出栈的过程,出栈的过程就是:

if(count > 0){

判断不成功后,就会出栈了,如下图所示:

c语言阶乘代码怎么写(最简单的c语言程序)

 

一共能执行多少次递归?

我们上面说到了,既然递归使用了栈,那么系统的栈的大小肯定是有极限的,不可能系统给你分配无极限的栈的大小,我看一些文章说栈大小是64K。

还是上面那个例子,我把传入数据设置为很大执行看看。

#include "stdio.h"

int tigui(unsigned long count ) {
	if(count > 0){
		count --;
		printf("%d \n",count);
		tigui(count);
	}
	return 1;
}

int main() {
	tigui(900000);
	return (100);
}

执行结果:

c语言阶乘代码怎么写(最简单的c语言程序)

 

所以说,递归次数肯定是有限定的了。

 

嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!

相关文章

评论列表

发表评论:
验证码

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。