C语言中函数的基本知识(2)

函数的调用可谓函数的重头戏,调用可分为:

  • 嵌套调用
  • 递归调用

一、嵌套调用

函数不能嵌套定义,但可以嵌套调用,也就是一个函数定义或者调用的过程中,允许另一个函数的调用。这里写一个最大值减去最小值作解析:

#include<stdio.h>
int max(int x,int y,int z)
{
	int t;
	t=x>y?x:y;
	return (t>z?t:z);
	
}
int min (int x,int y, int z)
{
	int c;
	c=x<y?x:y;
	return (c<z?c:z); 
	
}
int reduce (int x,int y,int z)
{
	return(max (x,y,z)-min (x,y,z));
}
int main ()
{
	int a,b,c,result;
	scanf("%d %d %d",&a,&b,&c);
	result=reduce (a,b,c);
	printf("最大值减去最小值的结果为%d",result);
	 
}

这里,作相差函数时调用最大值函数与最小值函数,且主函数调用差函数结果。

二、递归调用

递归调用是一种特殊的调用,即自己调用自己,但本质上与调用其他函数相同。
常见的递归就是类似于在数学数列里多见,如阶乘、等比,等差数列求和等等。可以看出:递归的思想就是逐项分解F(n),F(n-1)…,再合并。
这里写一个n阶乘N! 作为解析:

#include<stdio.h>
int f(int n)
{   
	if (n<0)
	return -1;
	else if (n==0||n==1)
	return 1;
	else 
	return (n*f(n-1));
	
}
int main ()
{
	int n;
	scanf ("%d",&n);
	printf("%d的阶乘为%d",n,f(n));
	
}

注意的是:这里的递归公式是在return后,返回一个确定的值再带入。如果不返回一个确定值,递归是不会停止的。即f(6)=6*f(5),为了求得结果,必须先调用得出f(5),即第一次调用,调用f(5)时,实参为5,形参也为5,不会变成0或1,调用会继续即f(5)=5*f(4),以此类推。


数组名作函数参数,传递的是数组首元素的地址。

以上就是我对两种调用的初步解释,如有补充,评论区欢迎指出~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值