一道Java面试题---北电的,进来看看吧

free131 2006-04-07 09:51:12
There are two errors in the following JAVA program:
  static void g(int i){
   if(i==1){return;}
   if(i%2==0){g(i/2);return;}
   else {g(3*i);return;}
   }
  please correct them to make sure we can get the printed-out result as below:
  3 10 5 16 8 4 2 1

感觉题目有点奇怪,大家说说怎么改
...全文
577 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
做鸡真好吃 2006-04-08
  • 打赏
  • 举报
回复
Mark~
chg2008 2006-04-07
  • 打赏
  • 举报
回复
满有意思得踢
netpotRL 2006-04-07
  • 打赏
  • 举报
回复
同意2楼的,总觉得把 数学问题 当成 算法 考有点BT~~
bgceft 2006-04-07
  • 打赏
  • 举报
回复
public class Play4 {
public static void main(String[] args)
{
g(3);
}

static void g(int i)
{
System.out.println(i);
if (i == 1)
{
return;
}
if (i % 2 == 0)
{
g(i / 2);
return;
} else
{
g(3 * i+1);
return;
}
}
}
woolceo 2006-04-07
  • 打赏
  • 举报
回复
首先是没有print语句.
zyx0328 2006-04-07
  • 打赏
  • 举报
回复
.......
回的晚了
zyx0328 2006-04-07
  • 打赏
  • 举报
回复
static void g(int i) {
System.out.print(i + " ");
if (i == 1) {
return;
}
if (i % 2 == 0) {
g(i / 2);
return;
} else {
g(3 * i + 1);
return;
}
}
wizardblue 2006-04-07
  • 打赏
  • 举报
回复
这道题目源于uva(一个acm试题站点acm.uva.es)的3*n+1 problem
该问题能够收敛是基于一个数学原理
wizardblue 2006-04-07
  • 打赏
  • 举报
回复
public class Play4 {
public static void main(String[] args) {
g(3);
}

static void g(int i) {
System.out.println(i);
if (i == 1) {
return;
}
if (i % 2 == 0) {
g(i / 2);
return;
} else {
g(3 * i+1);
return;
}
}
}
Hmilyl 2006-04-07
  • 打赏
  • 举报
回复
蛮有趣

62,629

社区成员

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

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