测试编程水平 你能不能快速解出这道递归题

elizaz 2014-09-04 03:53:01
一道递归题,只能用递归,不能用循环。

一个function 取数字参数,返回相应数字(如下例):
f(1)--->11
f(16)--->1166
f(123)--->112233


...全文
386 5 打赏 收藏 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
拥抱幸福 2014-09-19
  • 打赏
  • 举报
回复
public static void main(String[] args) { // TODO Auto-generated method stub int i = 123; String str = String.valueOf(i); System.out.println(getResult(str)); } public static String getResult(String str) { StringBuffer strBuff = new StringBuffer(); for(int i = 0;i<str.length(); i++){ char c = str.charAt(i); strBuff.append(c).append(c); } String result = strBuff.toString(); return result; }
大白菜丸子 2014-09-06
  • 打赏
  • 举报
回复
private static int fun(int i) { String str = String.valueOf(i); int len = str.length(); int temp = 0; if(len == 1) { return i * 10 + i; } else { temp = i / ((int)Math.pow(10 , len - 1)); i = (temp * 10 + temp) * (int)Math.pow(10 , (len - 1) * 2) + fun(i % ((int)Math.pow(10 , len - 1))); } return i; }
elizaz 2014-09-06
  • 打赏
  • 举报
回复
返回的是str 不是int呢
悠悠我心1982 2014-09-04
  • 打赏
  • 举报
回复
public static void main(String[] args) 
	{
		System.out.println(fun("1")); 
		System.out.println(fun("16")); 
		System.out.println(fun("123")); 
   
	}
	static  String fun(String str)
	{
		int len = str.length();
		char c = str.charAt(0);
		if (len==1)
		{
			return c + "" + c;
		}
		else if(len>1){
			return fun(String.valueOf(c))+fun(str.substring(1));
		}
		else  {
			return "";
		}
	}
whos2002110 2014-09-04
  • 打赏
  • 举报
回复

public static void main(String[] args) {
		StringBuilder sb = new StringBuilder();
		f("123", 0, sb);
		System.out.println(sb);
	}
	
	static void f(String str, int j, StringBuilder sb) {
		char c = str.charAt(j);
		sb.append(c + "" + c);
		if (++j < str.length()) {
			f(str, j, sb);
		}	
	}
只是实现了功能

51,407

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧