有趣的问题,看哪位大虾能帮忙解决下

cs676768709 2008-10-21 09:13:46
“1” 1
“2” (1+1、2)
“3” (1+1+1、1+2、3)
“4” (1+1+1+1、1+1+2、1+3、2+2、4)

大家试试用递归把1、2、3、4用上述括号表示方式给打印出来
...全文
181 19 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanganqing 2008-10-24
  • 打赏
  • 举报
回复

package csdn;

import java.io.IOException;

public class DivedDemo {
public static void main(String[] args) throws IOException{
for(int i=1;i<=4;i++){
String str = dive(i);
System.out.println(str);
}
}
private static String dive(int a){
StringBuilder sbd = new StringBuilder();
sbd.append("\""+a+"\""+" ");
for(int i=1;i<=a;i++){
if(i!=a){
for(int j=0;j<a-i;j++){
sbd.append("1");
sbd.append("+");
}
}
sbd.append(i);
if(i!=a){
sbd.append(",");
}
}
return sbd.toString();
}
}


a03180204 2008-10-22
  • 打赏
  • 举报
回复
肯定不对
鉴定完毕
java__king 2008-10-22
  • 打赏
  • 举报
回复
学习.
number321 2008-10-22
  • 打赏
  • 举报
回复
我居然看不懂题目......

如果把它当成找规律题的话,有人知道5这个数字,在括号里应该列出什么吗
时光瞄 2008-10-22
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 ZXEOC 的回复:]
其实我比较想知道如果是5的话,要求输出是什么样的,是1+2+2还是2+1+2或者是1+1+3…………?
[/Quote]

同意
justinavril 2008-10-22
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 zhou02607 的回复:]
- -!
懒得格式化了。。
[/Quote]
恩 改成这样就行了
 public void addTo(int base,String res,int leftValue){
if(leftValue==0){
res = res.substring(1, res.length());//加上这句就好了
System.out.println(res);
return;
}
for(int i=base;i<leftValue;i++){
addTo(i,res+"+"+(i+1),leftValue-i-1);
}
}
zhou02607 2008-10-22
  • 打赏
  • 举报
回复
- -!
懒得格式化了。。
justinavril 2008-10-22
  • 打赏
  • 举报
回复
回11#:
你的输出是这样的:
+1+1+1+1
+1+1+2
+1+3
+2+2

不过已经很好了 呵呵 ^_^
ZXEOC 2008-10-22
  • 打赏
  • 举报
回复
好神奇啊,为什么我这里看到我的10楼排在“机器机器”的9楼上面,CSDN好神奇啊……
zhou02607 2008-10-22
  • 打赏
  • 举报
回复

class Test
{
public void go(){
String res="";
addTo(0,res,4);
}
public void addTo(int base,String res,int leftValue){
if(leftValue==0){
System.out.println(res);
return;
}
for(int i=base;i<leftValue;i++){
addTo(i,res+"+"+(i+1),leftValue-i-1);
}
}
public static void main(String[] args){
Test test=new Test();
test.go();
}
}

ZXEOC 2008-10-22
  • 打赏
  • 举报
回复
其实我比较想知道如果是5的话,要求输出是什么样的,是1+2+2还是2+1+2或者是1+1+3…………?
zhou02607 2008-10-22
  • 打赏
  • 举报
回复

class Test
{
public void go(){
String res="";
addTo(0,res,4);
}
public void addTo(int base,String res,int leftValue){
if(leftValue==0){
System.out.println(res);
return;
}
for(int i=base;i<leftValue;i++){
addTo(i,res+"+"+(i+1),leftValue-i-1);
}
}
public static void main(String[] args){
Test test=new Test();
test.go();
}
}

justinavril 2008-10-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ZXEOC 的回复:]
什么就肯定不对,人家只是写了一个main方法,具体算法还没实现呢,就不对
PS:1楼,你这个架子搭出来也没啥用啊……
[/Quote]
我昨晚11点回复的 没时间多想了 要早点睡觉 第二天还要上班

我感觉实现起来还是稍微有点绕的 尤其是怎么实现1+1+1+1、1+1+2、1+3、2+2这几个的位置顺序 比如我觉得前三个都比较好实现 那2+2是怎么产生的呢...
lihan6415151528 2008-10-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ZXEOC 的回复:]
什么就肯定不对,人家只是写了一个main方法,具体算法还没实现呢,就不对
PS:1楼,你这个架子搭出来也没啥用啊……
[/Quote]

争议蛮大。学习
zjx2388 2008-10-22
  • 打赏
  • 举报
回复
没琢磨出来
ZangXT 2008-10-22
  • 打赏
  • 举报
回复
i=100就不要考虑递归了
ZXEOC 2008-10-22
  • 打赏
  • 举报
回复
什么就肯定不对,人家只是写了一个main方法,具体算法还没实现呢,就不对
PS:1楼,你这个架子搭出来也没啥用啊……
bruni 2008-10-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 justinavril 的回复:]
这道题关键在与如何写出括号里面的内容  这么晚了  先搭个架子吧

Java code
public class SortGenerator{
public String generator(int i){
//...
return str;
}

public static void main(String args[]){

for(int i=1; i<=4; i++)
System.out.print("\""+ i +"\" (");
System.out.print(generator(i));
System.out.println(i +")");
}
}


[/Quote]

恐怕没这么简单! 如果i = 100的话...
justinavril 2008-10-21
  • 打赏
  • 举报
回复
这道题关键在与如何写出括号里面的内容 这么晚了 先搭个架子吧

public class SortGenerator{
public String generator(int i){
//...
return str;
}

public static void main(String args[]){

for(int i=1; i<=4; i++)
System.out.print("\""+ i +"\" (");
System.out.print(generator(i));
System.out.println(i +")");
}
}

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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