A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张明 中级黑马   /  2012-9-8 17:20  /  2341 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

要求是写一个程序,其中要定义一个方法:long myMethod(int x,int y),来运算x的y次方,并且要用递归来实现

这是我简单的想法,让x乘以y次x
不知道这样是不是最优化的,具体实现就请大家帮帮忙了

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

4 个回复

倒序浏览
可以在long myMethod(int x,int y)方法中写一个for循环,以y作为for的第二个条件的界限
public static int myMethod(int x,int y)
{
     int number=1;
    for(int i=0;i<y;i++)
    {
         number*=x;
    }
    return number;
}

这是我的做法

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
李 玉林 发表于 2012-9-8 18:41
可以在long myMethod(int x,int y)方法中写一个for循环,以y作为for的第二个条件的界限
public static i ...

好的,谢谢,正确运行了
回复 使用道具 举报
递归可以,循环也可以,楼上是循环,我写个递归函数吧
int myMethod(int x,int y)
{
          if(y!=1)
                  x*=myMethod(x,y-1);
          return x;
}
需在调用前判断Y的值

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
public static double myMethod(double a, int b) {
                if (b >= 0) {
                        if (b == 0)
                                return 1;
                        return b == 1 ? a : a * myMethod(a, --b);
                }
                else {
                        return myMethod((double) (1 / a), -b);
                }
        }
大家都没有考虑特殊情况,比如结果使用int是否能装下?如果b是负数怎么办?

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马