递归调用,答案是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

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