初始函数及其递归调用

初始函数及其递归调用,第1张

初始函数及其递归调用 函数的定义

c中函数分为两种,一种是库函数也就是c语言自身函数库的函数。可以在引出头文件后直接使用。

另一种就是自定义函数,顾名思义就是用户自己定义的函数,用来实现某些特定的算法

函数的调用

函数的调用较为简单

print_star(); //调用无参函数,
c=max(a,b);  //调用了有参函数

上图为函数的调用形式。其一般形式为:函数名(实参列表。如果实参列表包含多个实参,则个参数间用逗号隔开。例如:Solve_nu(arr[i],'x',5).

函数调用时的数据传递

在调用有参函数时,主调用函数和被调用函数之间有数据传递关系。看代码

#include
int Solve_nu(int x,int y) //这里看定义的函数是否需要返回值,这里a,b是需要返回的。所以前面加上int。如果不需要返回直接就是void定义!
{
  int z=(x>y?x:y);
  return(z);   //这里z作为返回值给主函数!
  
//以上完成对函数的定义,这只是一个最入门的。随便写写了反正也没人看

}
int main()
{
  int a,b;
  scanf("%d %d",&a,&b);     //这里a,b为实际参数就是主函数在运行时使用的参数
  int ret=Solve_nu(a,b)    //这里实现对函数的调用,意思是把a,b这个实参送去函数加工厂。然后返回
  printf("%d",a);        
  return 0;
}
函数的递归

在带调用一个函数的过程中又出现或间接出现了该函数,成为函数的递归调用,递归的基本思想都是建立在普通的函数之上,就是把大事化小的思维。

example:比如有5名学生,你问第5名学生多少岁,他说比第4名大两岁,而第4名又说比第3名大2岁,这样一直下去。但是这样一直下去是得不到结果的,只有他们5个中其中一个说出自己多少岁,为题就会解决。这里第一个学生就是传递的终点,然后一步一步再往会推可以推出第5名学生多少岁。这就是递归思想

int Solve(int y)
{
	if (y < 0)
		return -1;
	else if (y == 0 || y == 1)
		return 1;
	else
		return (y * Solve(y - 1)); //走到这里函数回上面自己继续调用自己。
}

int main()
{
	int y = 0;
	scanf("%d", &y);
	int ret = Solve(y);
	printf("%dn", ret);
	return 0;
}
int my_strlen(char*n)
{
	if (*n != '')
	{
		return 1 + my_strlen(n + 1);   // 因为这里数组元素的存放是递增存放的
	}
	else
	{
		return 0;
	}
   
}
int main()
{
	char arr1[10] = "abcdef";//数组名arr1是首元素的地址-char*
	int ch = my_strlen(arr1);
	printf("%d", ch);
	return 0;
}

 从这里可以看出元素存放的方式。

int fun(int n)
{
	if (n <= 1)
		return 1;
	else
		return n * fun(n - 1); //递归的阶乘实现

}


int main()
{
	int i = 0;
	scanf("%d", &i);
	int ret = fun(i);
	printf("%d", ret);
	return 0;
}

总之递归思想就是这样了.不太容易想的到,溜了溜了

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5611456.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存