程序运行
#include<stdio.h>int f(int n,int x)
{
if(n==0)return 1;
if(n==1)return x;
return 2*f(n-1,x)+3*(n-2,x);
}
int main()
{
printf("%d",f(3,2));return 0;
}
请问这个程序怎么运行的{:5_104:} main函数是入口,然后printf里面调用了f(int,int)函数,并传了两个参数。然后两个判断,传过去的是3跟2,所以会执行下面的return,然后再次调用f(int,int)函数。这时候传的参数是(2,2)跟(1,2),后面这个,n==1触发条件判断,所以返回了2。这时候表达式是return 2*f(2,2)+3*2。f(2,2)不符合条件,就成了f(1,2)跟(f(0,2),也就是return 2*2+3*1也就是7。所以f(2,2)=7,前面的就是retrun 2*7+3*2。最后返回主函数的是20。这种叫做递归调用。我的结果不一定对,但是流程就是这样的。
页:
[1]