怎么就那么难 ,怎么就是解释得不清楚呢 还是不懂 还是不懂
2 posters
怎么就那么难 ,怎么就是解释得不清楚呢 还是不懂 还是不懂
# include<stdio.h>
fun(int x)
{if(x/2>0)fun(x/2) ;
printf("%d",x);
}
main()
{fun(6);printf("\n");}
fun(int x)
{if(x/2>0)fun(x/2) ;
printf("%d",x);
}
main()
{fun(6);printf("\n");}
lianlian- 帖子数 : 3
注册日期 : 12-03-18
回复: 怎么就那么难 ,怎么就是解释得不清楚呢 还是不懂 还是不懂
# include<stdio.h>
fun(int x)
{
if(x/2>0)
fun(x/2) ;
printf("%d",x);
}
main()
{fun(6);
printf("\n");
}
这个程序主要考察的是fun的递归,以及一个if语句.
对于fun,我们需要知道他的用法,在对fun进行调用的时候,如果没有条件表达式,他会直接输出fun的值,如果有条件语句,他需要先判断语句,输出符合的值,然后再把符合条件的原来发生调用的那个fun进行输出,另外fun,也可以对自己调用,判断是从外到里,输出结果的顺序是从里到外。
我们来看这个题:main,然后fun(6),我们就知道这个发生了调用和递归,我们知道不管他调用里面是什么,这个fun也要进行判断,只不过,最后输出罢了,6/2显然成立,所以最后会输出一个6,接着看,调用里面的,我们判断if,很显然fun(3>0),符合要求,所以,3也会输出,继续看fun(x/2)=fun(3),这里发生了一个对自身的调用,fun(3/2=1>0),所以1也符合,会输出,fuu(1)此时又发生了一个对自身的调用,接着fun(1/2),很显然fun(1/2=0<0)不成立,所以调用停止进行输出,之前我们说过,输出的时候是按从里到外,所以,最终输出结果是1,3,6
fun(int x)
{
if(x/2>0)
fun(x/2) ;
printf("%d",x);
}
main()
{fun(6);
printf("\n");
}
这个程序主要考察的是fun的递归,以及一个if语句.
对于fun,我们需要知道他的用法,在对fun进行调用的时候,如果没有条件表达式,他会直接输出fun的值,如果有条件语句,他需要先判断语句,输出符合的值,然后再把符合条件的原来发生调用的那个fun进行输出,另外fun,也可以对自己调用,判断是从外到里,输出结果的顺序是从里到外。
我们来看这个题:main,然后fun(6),我们就知道这个发生了调用和递归,我们知道不管他调用里面是什么,这个fun也要进行判断,只不过,最后输出罢了,6/2显然成立,所以最后会输出一个6,接着看,调用里面的,我们判断if,很显然fun(3>0),符合要求,所以,3也会输出,继续看fun(x/2)=fun(3),这里发生了一个对自身的调用,fun(3/2=1>0),所以1也符合,会输出,fuu(1)此时又发生了一个对自身的调用,接着fun(1/2),很显然fun(1/2=0<0)不成立,所以调用停止进行输出,之前我们说过,输出的时候是按从里到外,所以,最终输出结果是1,3,6
您在这个论坛的权限:
您不能在这个论坛回复主题
周日 十月 14, 2012 3:37 pm 由 15178959183
» 新人报道~我不是吐槽贴。。。
周三 五月 16, 2012 5:38 pm 由 萝卜爱喝水
» 课后作业1:编一个程序
周三 五月 09, 2012 11:24 pm 由 廖承启
» C语言初级课堂2--"Hello world"
周六 五月 05, 2012 12:52 am 由 醉之殇
» 新人来报道了。。。。。。
周四 五月 03, 2012 8:50 pm 由 sunquanwen
» 新人报到,字怎样就大了
周三 四月 25, 2012 7:50 am 由 wanghong
» 果断的。来报道啦。。。嘿嘿,我是新手哦
周六 四月 21, 2012 2:41 pm 由 ゛﹏小冲哥ゞ ✿『人事精英』✿李帅
» 指针数组与行指针的异同
周一 四月 09, 2012 3:59 pm 由 *小耳朵*
» 行指针q引用数组元素的方法
周一 四月 09, 2012 3:46 pm 由 *小耳朵*