3 回答

TA貢獻(xiàn)1900條經(jīng)驗(yàn) 獲得超5個(gè)贊
1、if(x<=0||y<=0)不滿足,所以return 3*foo(x-6,y/2)即3*foo(20-6,13/2)-----3*foo(14,6);
2、再看foo(14,6), if(x<=0||y<=0)還不滿足,return 3*3*foo(14-6,6/2)即3*3*foo(8,3);
3、再看foo(8,3), if(x<=0||y<=0)還不滿足,return 3*3*3*foo(8-6,3/2)即3*3*3*foo(2,1);
4、再看foo(2,1), if(x<=0||y<=0)還不滿足,return 3*3*3*3*foo(2-6,1/2)即3*3*3*3*foo(-4,0);
5、此時(shí)if(x<=0||y<=0)終于滿足,即foo(-4,0)return 1,加上前面幾步的迭代最終結(jié)果是3*3*3*3*1=81

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超16個(gè)贊

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊
#include <stdio.h>
int
foo(
int
x,
int
y)
{
if
(x<=0||y<=0)
return
1;
//這是個(gè)遞歸函數(shù) 返回1是函數(shù)的出口
return
3*foo(x-6,y/2);
}
int
main()
{
printf
(
"%d\n"
,foo(20,13));
return
0;
}
// x y
// 14 6
// 8 3
// 2 1
// -4 0 這是遞歸過程(4次)
//然后回溯(也要4次) 3*3*3*3=81 所以結(jié)果就是81
添加回答
舉報(bào)