重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
其实这两个函数是相同的功能,都是将数组首尾对应的数据进行交换。只不过fun2采用了函数的嵌套,比如说你这个数组调用fun2时 将数组的首地址和长度n传递到fun2里面,第一次运算 我们将a[0](值为1)和a[4](值为5)进行了交换,然后运行到fun2(x+1,n-2); x+1是指将指向数组的指针+1,其实就是将指针指向了a[1],然后n-2 实际就是指当前需要交换的数据的个数,当这个例子在fun2运行了2次以后 第一次n=5,第二次n=3,第三次n=1时,说明我们要交换的数据只有一个了,就是不用交换了,进入if语句,正常返回。打了这么多 有什么不懂的 可以再提问
10年积累的网站建设、成都网站设计经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站制作后付款的网站建设流程,更有城关免费网站建设让你可以放心的选择与我们合作。
当然可以!
C语言程序的最基本的模块就是函数,
该程序规定:任意函数都可以调用其它任意一个函数,包括函数本身;
1、函数调用自己本身, 这种称为递归;
通过递归,计算1+2+3+...+n值的代码:
2、自定义函数调用其它自定义函数的例子:
这个例子就是主函数调用自定义函数fun2,然后fun2调用另一个自定义函数fun1;
#include stdio.h
#include math.h
void fun2(int m)
{
int k=0,a[10];
for(int i=2;im;i++)
if(m%i==0)
a[k++]=i;
for(int i=0;ik;i++)
{
printf("%d",a[i]);
if(i!=k-1)
printf(",");
}
}
void fun1(int m)
{
if(m2)
printf("%d is a prime number",m);
for(int i=2;i*i=m;i++)
if(m%i==0)
fun2(m);
else
printf("%d is a prime number",m);
}
int main( )
{ int n;
scanf("%d",n);
fun1(n);
return 0;
}