void sort(int p,int m)
{
int s;
s=(p+m-1);
for(;s>p;s--)//这里会覆盖最后一个数据
s=(s-1);
m--;
s=(p+m-1);
if(m>1)
sort(p,m); //递归调用,递归没有起到逆序的作用,递归下去会覆盖很多数据
}
不用递归
void sort(int p,int m)
{
int i,j,temp;
i=0;
j=m-1;
while(i<j)
{
temp=p[j];
p[j]=p[i];
p[i]=temp;
i++;
j--;
}
}
递归程序在于理解执行过程
实际执行过程
main()
{
if (6/2>0)
{
if (3/2>0)
{
printf("%d",1);
}
printf("%d",3);
}
printf("%d",6);
}
所以结果是 1 3 6
在返回之前要先求出fib(5)和fib(4)的值,才能求和,返回结果,也就是再分别调用fib(5)和fib(4),在fib(5)的过程中,因为n>2,所以在fib(5)里还要算fib(4)和fib(3),在fib(4)里还要调用fib(3)和fib(2),直到n<=2才返回结果,返回的时候是一步步地向它的主调函数返回的,直到返回到fib(5)的这一层,这时fib(5)的值就求出来了,fib(4)也经历一遍统同样的过程,才能求出最终的值返回给main();
以上就是关于C语言 指针 递归调用 怎么搞全部的内容,包括:C语言 指针 递归调用 怎么搞、C语言递归调用、求教C语言的函数的递归调用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)