北大才子陈生:求教一道C语言题目

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/28 17:07:24
用图示法分析下述递归函数执行 s(6)调用的运行过程,写出调用完成后的函数值。

long f(int n)
{ if(n= =1) reture(1L);
else reture(f(n-1)+n*n);
}

应该是f(6)的调用运行过程吧?

{ if(n= =1) reture(1L); /* 第一行
else reture(f(n-1)+n*n); /* 第二行
}

首先执行f(6)
第一行 不满足6!=1跳到第二行
第二行的结果是 f(5)+6*6
接下来运行f(5)的值
最后的结果就是f(5)+36
-------------
现在运行f(5)
第一行 不满足5!=1跳到第二行
第二行的结果是 f(4)+5*5
接下来运行f(4)的值
最后的结果就是f(4)+25+36
--------------------------
.
.
.
.
当运行到f(1)时

第一行 满足1==1 返回f(1)=1L
最后的结果就是1+4+9+16+25+36,而且是long int 型数据

如果 n=1 函数值等于1L
如果 n<>1 函数值等于f(n-1)+n*n