DS-011 栈-递归

124 篇文章 0 订阅

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

下面的代码最后会返回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<<S(1);}

程序运行时使用栈来保存调用过程的信息,自栈底到栈顶保存的信息一次对应的是(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) 。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值