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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1黑马币
  对于字符串abcdef...n  求字符串 ((a*31+b)*31+c)*31....+n ,求代码0.0 没思路,求高人指教

最佳答案

查看完整内容

f(n)=f(n-1)*31+n递归就好了

17 个回复

倒序浏览
f(n)=f(n-1)*31+n递归就好了

评分

参与人数 1黑马币 +1 收起 理由
juanjuan + 1 赞一个!

查看全部评分

来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报

转化为数组  递归
recursion(int len)*31+char
回复 使用道具 举报
fdzx0707fh 发表于 2016-10-8 22:32
转化为数组  递归
recursion(int len)*31+char

谢谢,大神

点评

没看懂,楼主来点代码撸撸  发表于 2016-10-9 21:26
回复 使用道具 举报
//用循环做更简单,谁还有更好的方法,继续......
String s = "abcdefg";

                        String res = null;

                        for(char i : s.toCharArray()) {

                                if(res != null) {

                                        res = "(" + res + ")*31 + " + i;

                                } else {

                                        res = "" + i;

                                }

                        }

                        System.out.println(res);

评分

参与人数 1技术分 +1 收起 理由
噜噜吧 + 1 很给力!

查看全部评分

回复 使用道具 举报
//用循环做更简单,谁还有更好的方法,继续......
String s = "abcdefg";

                        String res = null;

                        for(char i : s.toCharArray()) {

                                if(res != null) {

                                        res = "(" + res + ")*31 + " + i;

                                } else {

                                        res = "" + i;

                                }

                        }

                        System.out.println(res);
回复 使用道具 举报


private static String recursive(char[] chars, int pos) {

                if(pos == 0) {

                        return "" + chars[pos];

                }

                String res = recursive(chars, pos - 1);

                return "(" + res + ")*31 + " + chars[pos];

        }

//在外面调用上面函数

String s = "abcdefg";

System.out.println(recursive(s.toCharArray(), s.toCharArray().length - 1));
回复 使用道具 举报


private static String recursive(char[] chars, int pos) {

                if(pos == 0) {

                        return "" + chars[pos];

                }

                String res = recursive(chars, pos - 1);

                return "(" + res + ")*31 + " + chars[pos];

        }

//在外面调用上面函数

String s = "abcdefg";

System.out.println(recursive(s.toCharArray(), s.toCharArray().length - 1));
回复 使用道具 举报

//递归的方式:  
private static String recursive(char[] chars, int pos) {
        if(pos == 0) {
            return "" + chars[pos];
        }
        String res = recursive(chars, pos - 1);
        return "(" + res + ")*31 + " + chars[pos];
    }
//在外面调用上面函数
String s = "abcdefg";
System.out.println(recursive(s.toCharArray(), s.toCharArray().length - 1));
回复 使用道具 举报

//递归的方式:  
private static String recursive(char[] chars, int pos) {
        if(pos == 0) {
            return "" + chars[pos];
        }
        String res = recursive(chars, pos - 1);
        return "(" + res + ")*31 + " + chars[pos];
    }
//在外面调用上面函数
String s = "abcdefg";
System.out.println(recursive(s.toCharArray(), s.toCharArray().length - 1));
回复 使用道具 举报
加油楼主,你可以的
回复 使用道具 举报

谢谢,一起加油!!!!!
回复 使用道具 举报

谢谢,一起加油!!!!!
回复 使用道具 举报
fdzx0707fh 发表于 2016-10-8 22:32
转化为数组  递归
recursion(int len)*31+char

我想请问这个recuision是在哪学的?

我之前不知道,请教教我.
回复 使用道具 举报
juanjuan 发表于 2016-10-9 22:17
//用循环做更简单,谁还有更好的方法,继续......
String s = "abcdefg";

你这个只是输出语句.

根本不计算

题目的思想是要计算.

你这样只用一部分题来讨论,有点偏.

当然,也可以.
回复 使用道具 举报
明白了.

知道楼主是要做这个输出语句.

挺有意思.

我也学习了.
回复 使用道具 举报
笑对明天 来自手机 中级黑马 2017-2-16 00:26:44
17#
递归调用,这难度还可以吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马