Algs4-1.1.18递归函数在做什么

 1.1.18请看以下递归函数:
public static int mystery(int a,int b)
{
    if (b==0)       return 0;
    if (b%2==0)  return mysetery(a+a,b/2);
    return mystery(a+a,b/2)+a;
}
mystery(2,25)和mystery(3,11)的返回值是多少?给定正整数a和b,mystery(a,b)计算的结果是什么?将代码中的+替换为*并将return 0改为return 1,然后回答相同的问题。

1)解:按2,25画出递归树,b%2==0时生成右子树,b%2!=0时即b%2==1时生成左子树,余数串即是十进制25的二进制表示。
图片

2)按上图类似解法得a^b。

转载于:https://www.cnblogs.com/longjin2018/p/9848564.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值