首页 > 试题广场 >

给定下列程序,那么执行printf("%d\n", foo(

[单选题]
给定下列程序,那么执行printf("%d\n", foo(20, 13));的输出结果是()
int foo(int x, int y){
    if (x <= 0 || y <= 0) 
        return 1; 
    return 3 * foo( x-6, y/2 ); 
}
  • 3
  • 9
  • 27
  • 81
推荐

解析:foo(20, 13) = 3 * foo(14, 6) = 3 * 3 * foo(8, 3) = 3 * 3 * 3 * foo(2, 1) = 3 * 3 * 3 * 3 * foo(-4, 0) =3 * 3 * 3 * 3 * 1 = 81

答案:D

编辑于 2015-01-07 20:25:58 回复(4)
选D.81
分析:
3*6 < 20 < 4*6,递归 4层。
log13 < log16 = 4;
所以结果为 3^4 = 81.
发表于 2015-01-07 02:08:15 回复(2)
选D:81

因为x, y都是int型,所以可知如下:

foo( 20, 13 ) = 3 * foo ( 14, 6 )
               = 3 * 3 * foo ( 8, 3)
              =  3 * 3 * 3 * foo ( 2, 1)
               =  3 * 3 * 3 * 3 * foo ( -4, 0)
              =  3 * 3 * 3 * 3 * 1
                 = 81
发表于 2016-07-27 09:14:49 回复(1)
13/2是整除,结果为6
发表于 2019-05-08 23:44:01 回复(0)
c
发表于 2019-04-28 14:54:05 回复(0)
为什么是整除
发表于 2019-04-11 00:02:49 回复(0)
foo(20, 13)
3*foo(14,7)
3*3*foo(8,3)
3*3*3*foo(2,1)
3*3*3*3*1=81
发表于 2018-06-22 15:46:59 回复(0)
class Main {  static int foo(int x, int y){  if (x <= 0 || y <= 0)  return 1;  return 3 * foo( x-6, y/2 );  }  public static void main(String[] args) {  System.out.println(foo(20,30));  }  }

发表于 2018-03-18 14:04:11 回复(0)
很好考虑,递归四层;每层都乘以3,所以是3*3*3*3 = 81.
发表于 2015-09-29 00:18:33 回复(0)
foo(20,13)=3*foo(14,6)=3*3*foo(8,3)=3*3*3*foo(2,1)=3*3*3*3*1
发表于 2015-02-19 15:51:53 回复(0)

解析:foo(20, 13) = 3 * foo(14, 6) = 3 * 3 * foo(8, 3) = 3 * 3 * 3 * foo(2, 1) = 3 * 3 * 3 * 3 * foo(-4, 0) =3 * 3 * 3 * 3 * 1 = 81

答案:D

发表于 2014-10-25 00:25:54 回复(0)