递归调用,答案是120,如何调用的
来源:百度知道 编辑:UC知道 时间:2024/05/09 14:01:33
# include<stdio.h>
main()
{ void f(int n);
printf("%d",f(15));
}
void f(int n)
{if(n<3)
printf("%d",n);
else{
f(n/3);
printf("%d",n%3);
}
return;}
为什么我做出来的是11
main()
{ void f(int n);
printf("%d",f(15));
}
void f(int n)
{if(n<3)
printf("%d",n);
else{
f(n/3);
printf("%d",n%3);
}
return;}
为什么我做出来的是11
printf("%d",f(15));
首先这句是不对的 f没有返回值
f(15) 的时候 调用f(15/3) 继而调用f(5/3)
此时n <3 打印 1
执行f(5/3)下一句 打印5%3 = 2
执行f(15/3) 下一句 15%3 = 0
结果 120
f(15)->f(15/3=5)->f(1)---printf("%d",1)输出1; --printf("%d",5%3)输出2; --printf("%d",15%3)输出0;
5求模3=5 - (5/3)*3 = 2
15求模3=15 - (15/3)*3 =0