本帖最后由 jackz007 于 2023-12-26 10:10 编辑
你这个不叫递归,亲,这样才是:void funx(...)
{
. . .
funx(...) ; // 单个函数调用自己
. . .
}
或者void funA(...)
{
. . .
funB(...) ; // 多个函数互相调用
. . .
}
void funB(...)
{
. . .
funA(...) ; // 多个函数互相调用
. . .
}
你这个实际上只是在调用一个函数的时候,多次将对同一个函数的调用结果作为了输入参数,从而形成了对同一个函数的多级次嵌套调用,应该叫函数的嵌套调用。
此外,对函数 max2() 的声明多余了:int max2(int x, int y) ; // 此声明多余
int max2(int x , int y)
{
因为,只有在对函数的调用位置出现在定义位置之前的时候才需要声明,在本例中,对 max2() 的调用出现在 main() 中,而 main() 的位置显然在 max2() 的后面,所以,可以非常放心地去掉对 max2() 的声明。#include <stdio.h>
int max2(int x , int y) // 这是 max2() 的定义位置
{
return (x > y) ? x : y ; //使用三目运算简洁高效
}
int main(void)
{
int a, b, c, d ;
printf("numbER 4:") ;
scanf("%d%d%d%d", &a, &b, &c, &d) ;
printf("%d\n" , max2(max2(max2(a,b),c),d)) ; // 这是对 max2() 的调用位置,定义在前,调用在后,顺序正常,无需声明。
return 0 ;
}
这是我修改的版本,谨供楼主参考:
|