题目:采用
递归的方法给正整数n加上分隔符','
比如 1234567 ==> 1,234,567
其中putCommas()是我自己的方法,insertCommas()是google出来的一个老外写的方法。我的分隔符是从前面开始加的,比如上面的例子,我是先在1之后加上',',而老外那个insertCommas是从后面开始加上去的
先贴上代码吧 等下再分析
public class Test {
public static void main(String[] args) {
int i =1234;
String value = i + "";
value = putCommas(value);
//value = insertCommas(value);
System.out.println(value);
}
public static String putCommas(String str) {
int length = str.length();
if(length > 3) {
String ahead = str.substring(0,length - 3);
String back = str.substring(length-3);
str = putCommas(ahead) + "," + back;
}
return str;
}
public static String insertCommas(String str) {
String newStr = str;
int firstComma = str.indexOf(",");
if(firstComma < 0) firstComma = str.length();
if(str.length() > 3 && firstComma > 3) {
newStr = insertCommas(new StringBuffer(str).insert(firstComma-3,",").toString());
}
return newStr;
}
}
其中,我是将原字符串分成后3位以及前面剩下的字符串(假设此时字符串长度还是大于3),而老外的办法是将字符串打碎按照下标加入了分隔符之后再toString()合起来。
我感觉我的方式要好理解一点,可能他的方法效率要高一点。
为了让我的方法更清楚的说明是从前面开始加分隔符
我的方法改成下面的样子:
public static String putCommas(String str) {
int length = str.length();
if(length > 3) {
String ahead = str.substring(0,length - 3);
String back = str.substring(length-3);
//str = putCommas(ahead) + "," + back;
ahead = putCommas(ahead);
str = ahead + "," + back;
}
return str;
}
分享到:
相关推荐
输入计算出的分解式的数目
【问题描述】编写函数f,功能是用递归的方法求斐波那契数列的第n项,函数原型为 int f(int n),在主函数中输入一个正整数n,调用函数f求出斐波那契数列的第n项,并在主函数中输出。 斐波那契数列:1,1,2,3,5,8,13,...
进制转换 把一个任意的十进制正整数 N 转换成 d 进制数。 N 是一个正整数,d 是一个大于 1 小于 10 的整数,二者均由用户输入,且两数字用换行分隔。
1、将正整数n表示成一系列正整数之和: n=n1+n2+…+nk, 其中n1≥n2≥…≥nk≥1,k≥1。正整数n的这种表示称为正整数n的划分。求正整数n的不同划分个数。 2、设计一个递归算法生成n个元素{r1,r2,…,rn}的全排列。 ...
大于1 的正整数n可以分解为:n=x1*x2*…*xm。 算法设计: 对于给定的正整数n,编程计算n共有多少种不同的分解式。 例如,当n=12 时,共有8 种不同的分解式: 12=12; 12=6*2; 12=4*3; 12=3*4; 12=3*2*2; 12=2*6...
本资源综合利用c语言的while循环, if条件判断, 函数递归调用等多种c语言知识,该算法采用传统的数位分离和字符数组,然后再用千分位分隔符进行插入。综合考虑,该算法对c语言初学者具有较大启发。
递归求正整数的质因子.cpp
大于1的正整数 n 都可以分解为 n = x1 * x2 * ... * xm 例如:当n=12时,共有8种不同的分解式: 12 = 12 12 = 6*2 12 = 4*3 12 = 3*4 12 = 3*2*2 12 = 2*6 12 = 2*3*2 12 = 2*2*3 对于给定正整数n,计算n共有多少...
C语言中利用递归的方式得到n!...,函数原型为 int f(int n),在主函数中输入一个正整数n,调用函数f求出n!并在主函数中输出。 【输入形式】10 【输出形式】10!=3628800 【样例输入】10 【样例输出】10!=3628800
n后问题---递归回溯法 n后问题---递归回溯法 n后问题---递归回溯法 n后问题---递归回溯法 n后问题---递归回溯法 n后问题---递归回溯法 n后问题---递归回溯法 n后问题---递归回溯法 n后问题---递归回溯法 n后问题---...
递归回溯法求解整数线性规划及MATLAB实现.pdf
使用递归 :-------------输入给出正整数n,输出1到n的全排列,排列的输出顺序为字典序,每种排列占一行,数字间无空格,
任意输入一个整数,输出结果能够用递归方法实现整数的划分。
Description 大于1的正整数 n 都可以分解为 n = x1 * x2 * ... * xm, 每个xi为大于1的因子,即1<xi<=n 。 例如:当n=12时,共有8种不同的分解式: 12 = 12 12 = 6*2 12 = 4*3 12 = 3*4 12 = 3*2*2 12 = 2*6 12 = 2...
本文实例讲述了python递归计算N!的方法。分享给大家供大家参考。具体实现方法如下: def factorial(n): if n == 0: return 1 else: return n * factorial(n - 1) 希望本文所述对大家的Python程序设计有所帮助...
用递归法计算从n个正整数中选择k个数的不同组合数
N皇后问题求解,分别是递归方法实现和非递归方法实现,后者采用回溯方法,C语言实现的
c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘...
分析:求解k个数的不同组合,我们可以用一维数组a[0]~a[k-1]来保存其中的一个结果,因为组合...所以a[k-1]即组合中的最后一个数,只能为k~n 令i=a[k-1] 则 i>=k && i<=n 完整代码请参考我的博客文章,这里只是核心部分
递归方法实现斐波那契数列