【C语言】函数嵌套的调用 函数递归调用

一、两种函数调用的方法。
1、可以嵌套调用函数在调用一个函数的过程中,又调用另一个函数。
      例:add(add(a,b),c);
2.可以在函数的定义中调用另一个函数。

//加函数 
int add(int x, int y){
	return x+y;
}
//减函数 
int sub(int x,int y){
	return sub(add(x,y),z);
}

例:从键盘输入三个数a,b,c,用函数嵌套调用 
计算a+b-c 
    a*b/c
    (a+b)*c/d
    a/b+c

#include<stdio.h>
int add(int x,int y){
	return x+y;
}
int sub(int x,int y){
	return x-y;
}
int mul(int x,int y){
	return x*y;
}
int div(int x,int y){
	return x/y;
}
int main(){
	int a;
	int b;
	int c;
	int d;
	int ret;
	int ent;
	char ch; 
	printf("请输入四个整数:"); 
	scanf("%d,%d,%d,%d",&a,&b,&c,&d);
	getchar();
	printf("请输入一个运算符:");
	ch = getchar();
	switch(ch)
	{
		case '+':
			ret = add(div(a,b),c);
			break;
		case '-':
			ret = sub(add(a,b),c);
			break;
		case '*':
			ret = mul(add(a,b),c);
			break;
		case '/':
			ret = div(mul(a,b),c);
			ent = div(mul((add(a,b)),c),d);
			break;
		default:
			printf("输入不合法\n");
	}
	printf("所得的值为:%d\n",ret);
	printf("除d所得的值为:%d\n",ent);
	return 0;
}

在上面这道题中,就充分的将函数嵌套的调用展现出来,函数双嵌套,函数多嵌套。运用switch将格式符打出来,可以实现计算器加减乘除。

二、函数的递

归调用
定义:调用一个函数的过程中又出现直接或间接地调用该函数本身。
递归就是一个函数在它的函数体内调用本身。递归函数必须有结束条件。
当函数一直在递推,知道遇到墙之后,这个墙就是结束条件。
递归要有两个要素,结束条件和递推关系。
以下有几个例题分享给大家:

例:有5个学生坐一起,第五个比第四个大2岁,第四个比第三个大2岁...最后第一个学生说他是10岁,请问第5个学生多大?

#include<stdio.h>
int age(int a){
	int b;
	b = 10+(2*a);
	return b;
}
int main(){
	int c = 4;
	printf("第五个学生:");
	printf("%d岁",age(c));
	return 0;
}

先理解题目,5位同学,前面的都是一个比一个小两岁,自然最后一位是最小的,使用调用函数定义a,b就是第五位学生的年龄,b = 10 + (2*a),就将第五位同学年龄就得出来了,用return
将他的值返回给主调函数,打印就好啦。

  • 9
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
函数嵌套指在一个函数调用另一个函数,而递归则是指函数调用自身的过程。 在C语言中,函数嵌套可以让程序更加模块化,便于维护和阅读,也可以提高程序的可重用性。例如,一个函数中需要调用另一个函数来完成某个功能,可以将这个函数嵌套在主函数中。 函数嵌套的语法很简单,例如: ```c void func1() { printf("This is function 1\n"); } void func2() { printf("This is function 2\n"); func1(); } int main() { func2(); return 0; } ``` 在上面的例子中,func2()函数调用了func1()函数。 递归则是指一个函数调用自身的过程。递归函数必须包含一个停止条件,否则将会出现无限递归导致程序崩溃。递归函数可以用于解决一些问题,例如计算阶乘、斐波那契数列等。 下面是一个计算阶乘的递归函数的示例: ```c int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); } } int main() { int result = factorial(5); printf("%d", result); return 0; } ``` 在上面的例子中,factorial()函数调用自身来计算阶乘。当n等于0时,递归停止,函数返回1。否则,函数计算n的阶乘并返回结果。 需要注意的是,递归函数的效率有时候并不高,因为每次调用函数都需要将函数的参数和返回地址等信息压入栈中,消耗了一定的时间和内存。因此,在使用递归函数时,应该尽量避免出现无限递归的情况,以及递归次数过多导致栈溢出等问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值