-
梵蒂冈之花
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、此时if(x<=0||y<=0)终于满足,即foo(-4,0)return 1,加上前面几步的迭代最终结果是3*3*3*3*1=81
-
侃侃尔雅
最好的办法,写程序,交给电脑去执行:int foo(int x,int y){ printf("x: %d, y: %d\n", x, y); if (x<=0||y<=0) return 1; return 3*foo(x-6,y/2);}int main(){ printf("%d\n",foo(20,13)); return 0; }结果:
-
SMILET
#include <stdio.h>int foo(int x,int y){if(x<=0||y<=0) return 1;//这是个递归函数 返回1是函数的出口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 所以结果就是81