复制
收藏
提问
简洁
给定输入 15 2<回车>,以下程序的运行结果是:#include <stdio.h> void func(int n, int b) { int r; r = n % b; if (n >= b) { func(n / b, b); } printf("%d", r); } int main() { int n, b; scanf("%d%d", &n, &b); func(n, b); return 0;
3月前
全网
文档
学术
百科
知识库
回答简洁模式
深入研究一些
给定输入 "15 2<回车>",程序的运行结果将按照递归函数 func
的逻辑进行计算。首先,func
函数接收两个参数 n
和 b
,其中 n
是要处理的数字,b
是除数。函数首先计算 n
除以 b
的余数,并将其存储在变量 r
中。如果 n
大于或等于 b
,则函数将递归调用自身,使用 n
除以 b
的商作为新的 n
值,而 b
保持不变。当 n
小于 b
时,递归结束,此时 func
函数将打印出 r
的值12。
对于输入 "15 2",程序的运行过程如下:
- 初始调用
func(15, 2)
,计算15 % 2
得到1
,然后因为15 >= 2
,递归调用func(7, 2)
。 - 递归调用
func(7, 2)
,计算7 % 2
得到1
,再次递归调用func(3, 2)
。 - 递归调用
func(3, 2)
,计算3 % 2
得到1
,再次递归调用func(1, 2)
。 - 调用
func(1, 2)
,计算1 % 2
得到1
,此时1 < 2
,递归结束,开始打印1
。 - 然后逐层返回,打印上一次递归调用的余数,依次为
1
、1
和1
。
因此,程序的最终输出结果是 1111
。6
你觉得结果怎么样?