C语言递归调用

递归调用

C语言的函数都支持递归,也就是说,每个函数都可以直接或间接的调用自己。所谓的间接调用,是指再递归函数调用的下层函数中再调用自己。
递归关系如下图所示:
在这里插入图片描述
在这里插入图片描述

递归之所以可以实现,是因为函数的每个执行过程在栈中都有自己的形参和局部变量的副本,这些副本和该函数的其他执行过程不发生关系。

这种机制是当代大多数程序设计语言实现子程序结构的基础,也使得递归成为可能。假定某个调用函数调用了一个被调用函数,再假定被调用函数又反过来调用了调用函数,那么第二个调用就成为调用函数的递归,因为它发生在调用函数的当前执行过程运行完毕之前。而且,因为原先的调用函数、现在的被调用函数在栈中较低的位置有它独立的一组参数和自变量,原先的参数和变量不受任何影响,所以递归操作可以正常工作。

举例下面的函数代码就是递归调用

#include<stdio.h>

void DisplayNames(char **cNameArray)

char *cNames[]={
    
    "lebron","wardell","luka","jokc","kawhi"};

int main()
{
    
    
	DisplayNames(cNames);
	return 0;
}

void DisplayNames(char **cNameArray)
{
    
    
	if(cNameArray=="end")
	{
    
    
		return ;
	}
	else 
	{
    
    
		DisplayNames(cNameArray+1);
		printf("%s\n",*cNameArray);
	}
}

猜你喜欢

转载自blog.csdn.net/qq_32100603/article/details/113871728