鱼C论坛

 找回密码
 立即注册
查看: 4026|回复: 4

C函数的问题

[复制链接]
发表于 2012-12-8 21:20:26 | 显示全部楼层 |阅读模式
5鱼币
1)#include<stdio.h>
void fun(int *a,int i,intj)
{int t;
if(i<j)
{t=a[i];a[i]=a[j];a[j]=t;
i++;j--;
for(i=0;i<4;i++) printf("%2d",a[i]);
fun(a,i,j);
}
}
void main()
{ int x[]={2,6,1,8},i;
fun(x,0,3);
for(i=0;i<4;I++) printf("%2d",x[i]);
printf("\n");
}
为什么主函数输出不是递归?


最佳答案

查看完整内容

其实不知道楼主想要的递归是什么,不过调试了一下 #include void fun(int *a,int i,int j) { int t; if(i
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-12-8 21:20:27 | 显示全部楼层
其实不知道楼主想要的递归是什么,不过调试了一下
#include<stdio.h>
void fun(int *a,int i,int  j)
{
        int t;
        if(i<j)
        {
                t=a[i];
                a[i]=a[j];
                a[j]=t;
                i++;
                j--;
        for(i=0;i<4;i++)
                printf("%2d",a[i]);
        /*
        ** 调到这里的时候 i == 4 and j==2
        ** 因此后面的fun(a,i,j)中 if(i<j) 就进不去了
        */
        fun(a,i,j);
        }
}
void main()
{
        int x[]={2,6,1,8};
        int i;
        fun(x,0,3);
        for(i=0;i<4;i++)
                printf("%2d",x[i]);
        printf("\n");
}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-12-9 10:49:28 | 显示全部楼层
fun(int *a,int i,int j) 中if里面那个fun(a,i,j)其中i=4,明显错误
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-12-9 13:10:00 | 显示全部楼层
楼主,你这个程序没问题,但是不知道你说的“为什么主函数输出不是递归?”什么意思,递归就是在过程或函数里调用自身,而主函数的输出是循环。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-12-9 18:06:50 | 显示全部楼层

哦,偶明白了,谢谢!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-16 18:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表