首页 > 试题广场 >

下面程序输出结果是:int foo(int x, int y

[单选题]
下面程序输出结果是()
#include <stdio.h>

int foo(int x, int y){
    if(x <= 0 || y <= 0){
            return 1;
    }
    if(y%2 == 0) {
            return 2*foo(x-3, y/3);
    }
    else{
            return 3*foo(x-2, y/2);
    }
}

int main() 
{   printf("%d\n", foo(9, 12));
    return 0;
}



  • 12
  • 8
  • 36
  • 54
发表于 2020-08-08 11:32:45 回复(0)
y=12 -> 2*foo(6, 4) = 2 * 6 = 12 y=4 -> 2*foo(3, 1) = 2 * 3 = 6 y=1 -> 3*foo(1, 0) = 3 * 1 = 3 foo(1, 0) = 1
发表于 2021-11-02 09:41:45 回复(0)
2*2*3
发表于 2021-03-28 12:49:41 回复(0)
第一次是x=9,y=12,在符合else的,答案为2*f(x-3,y/3),此时新的x是6,新的y是4,重复以上操作,在else那里,答案为2*2*f(x-3,y/3),此时新的x是3,新的y是1,接下来是第三种情况,此时答案为2*2*3*f(x-2,y/2),此时x是1,y是0,符合第一种情况,则最后答案为2*2*3*1=12
编辑于 2024-03-17 16:09:29 回复(0)
1 x 2 x 2 x 3
发表于 2023-09-14 19:13:15 回复(0)
foo(1,0)==1
foo(3,1)=3*foo(1,0)=3
foo(6,4)=2*foo(3,1)=6
2*foo(6,4)->12

 

发表于 2021-10-13 09:39:08 回复(0)
<p>1foo(9,12)->2 × foo(6,4)-></p><p>2 × foo(3,1)->3 × foo(1,0)倒过来就是</p><p>3×1=3->2×3=6->2×6=12</p>
发表于 2020-09-04 03:40:06 回复(0)