首页 > 试题广场 >

运行结果是?

[单选题]
#include <iostream>
using namespace std;
int f(int n){
  if (n==1)
    return 1;
    else
    return (f(n-1)+n*n*n);
}
int main(){
  int s=f(3);
  cout<<s<<endl;
  return 0;
}
运行结果是?
  • 8
  • 9
  • 27
  • 36
D
其实递归的原理就是利用栈来进行中间存储的数据。
f(3)=f(2)+3*3*3=9+27=36
f(2)=f(1)+2*2*2=1+8=9
f(1)=1
图形化或者内存的走势如下图:

发表于 2015-10-17 07:49:38 回复(2)

f( )是一个递归函数,结束递归的条件为n==1

在main函数中:

先调用f(3),n = 3,return f(2) + 3*3*3

再调用f(2),n = 2,return f(1) + 2*2*2

最后调用f(1),n=2,return 1,递归结束

再逐层返回:

f(1) = 1

f(2) = f(1 ) + 2*2*2 = 1 + 8 = 9

f(3) = f(2) + 3*3*3 = 9 + 27 = 36

 

发表于 2018-09-20 19:39:40 回复(0)
没学过c++,主要是想刷一些c的题。这里遇到没见过的知识点,记录一下 count<<s<<endl表示输出s和换行符到屏幕
发表于 2018-03-20 08:39:33 回复(0)
D
发表于 2015-11-27 00:11:59 回复(0)
n     f(n)
1       1
2      f(1)+2*2*2 = 1 + 8 = 9
3      f(2)+3*3*3 = 9 + 27 = 36
发表于 2015-10-17 12:30:22 回复(1)
D
递归计算各个数的立方和
发表于 2015-10-17 10:41:25 回复(0)
d
发表于 2015-10-17 10:02:00 回复(0)
D
发表于 2015-10-16 13:03:01 回复(0)