DS-011 栈-递归

递归指在一个函数、过程或数据结构的定义中应用到了它自身。递归的精髓在于能否将原始问题转换为属性相同但规模较小的问题。

下面的代码最后会返回4。(f(0)=2,f(1)=1*f(0) = 2, f(2)=2*f(1) = 4)

if f(int x){
return ((x>0)? x*f(x-1):2); //条件表达式
}
int i;
i = f(f(1));


//if (x>0) return x*f(x-1);
//else return 2;

 

已知程序如下:

int S(int n)
{return (n<=0)?0:S(n-1)+n;}

voidSmain()
{cout<

程序运行时使用栈来保存调用过程的信息,自栈底到栈顶保存的信息一次对应的是(A

A.main()->S(1)->S(0)    B.S(0)->S(1)->main()

C. main()->S(0)->S(1)     D.S(1)->S(0)->main()

解析:递归调用函数时,在系统栈里保存的信息需满足先进后出的特点。依次调用了main()、S(1)、S(0)。入栈顺序,栈底到栈顶信息都是main()->S(1)->S(0) 。

你可能感兴趣的:(学习,笔记)