
void fun(int x) { if(x/2>1) fun(x/2); printf("%d", x); } main() { fun(10);printf("\n");}
2个回答
展开全部
void fun(int x)
{
if(x/2>1) fun(x/2);
printf("%d", x);
}
main()
{
fun(10);printf("\n");
}
//函数fun为递归函数,递归作用是将传递进来的x参数除以2,如果结果比1大继续递归,也就是调用自身,再次将除2以后的值传递进这个函数,直到x除以2后不比1大,那么才将这个值输出出来.在main中调用函数fun为他传递参数值为10.第一次调用fun此时x为10,除2是5,比1大,继续调用自身,将5传入新的fun函数.5除2是2.5(这里x是int形只能保存整数,所以2.5被强制截去小数部分,变成2)还是比1大,继续调用自身,此时传递2进第三个fun函数.2除2就是1了,不比1大了,递归结束,开始返回,
先返回第三个fun函数,输出此时的x值是2.再回返第二个函数func.输出值5最后是第一个输出是10.
所以程序运行的结果应该是.2510
{
if(x/2>1) fun(x/2);
printf("%d", x);
}
main()
{
fun(10);printf("\n");
}
//函数fun为递归函数,递归作用是将传递进来的x参数除以2,如果结果比1大继续递归,也就是调用自身,再次将除2以后的值传递进这个函数,直到x除以2后不比1大,那么才将这个值输出出来.在main中调用函数fun为他传递参数值为10.第一次调用fun此时x为10,除2是5,比1大,继续调用自身,将5传入新的fun函数.5除2是2.5(这里x是int形只能保存整数,所以2.5被强制截去小数部分,变成2)还是比1大,继续调用自身,此时传递2进第三个fun函数.2除2就是1了,不比1大了,递归结束,开始返回,
先返回第三个fun函数,输出此时的x值是2.再回返第二个函数func.输出值5最后是第一个输出是10.
所以程序运行的结果应该是.2510
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询