
java大家帮我看看我这代码怎么输出。。。
importjava.util.Scanner;publicclassdg{publicstaticintf(intx){Scannersc=newScanner(Sys...
import java.util.Scanner;
public class dg {
public static int f(int x)
{
Scanner sc=new Scanner(System.in);
x=sc.nextInt();
if(x==1)
return 1;
else
return f(x-1)*2;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
} 展开
public class dg {
public static int f(int x)
{
Scanner sc=new Scanner(System.in);
x=sc.nextInt();
if(x==1)
return 1;
else
return f(x-1)*2;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
} 展开
6个回答
展开全部
import java.util.Scanner;
public class Dg {
public static int f(int x)
{
if(x==1)
return 1;
else
return f(x-1)*2;
}
public static void main(String[] args) {
System.out.println("请输入一个字符串:");
Scanner sc=new Scanner(System.in);
int x=sc.nextInt();
System.out.println( Dg.int f( x));
}
}
输出结果是
请输入一个字符串:
3 //输入的是3返回结果是4
4
public class Dg {
public static int f(int x)
{
if(x==1)
return 1;
else
return f(x-1)*2;
}
public static void main(String[] args) {
System.out.println("请输入一个字符串:");
Scanner sc=new Scanner(System.in);
int x=sc.nextInt();
System.out.println( Dg.int f( x));
}
}
输出结果是
请输入一个字符串:
3 //输入的是3返回结果是4
4
展开全部
你这方法写的就不对。你这样写,当输入的值不是1的时候还需要你再输入值,那就不是之前的那个了。而且再次输入的值不是1 的话,还会重复上面的事情。根本不会有结果。
import java.util.Scanner;
public class dg {
public static int f(int x)
{
//Scanner sc=new Scanner(System.in);
//x=sc.nextInt();
if(x==1)
return 1;
else
return f(x-1)*2;
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
x=sc.nextInt();
System.out.println(f(x));
}
}
import java.util.Scanner;
public class dg {
public static int f(int x)
{
//Scanner sc=new Scanner(System.in);
//x=sc.nextInt();
if(x==1)
return 1;
else
return f(x-1)*2;
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
x=sc.nextInt();
System.out.println(f(x));
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
虽然不知道你要实现什么功能,但是问题挺多的。。
第一点:你既然将变量x作为参数传入f方法中那么为什么在方法中又要使用scanner为x重新赋值呢,这样的话你方法的参数x就没作用了啊 ,你还不如在f方法中里面声明x变量,然后f方法不要参数。然后return (f-1)*2改成return f()*2
第二点:你可以尝试在main方法中使用System.out.println(f());打印,然后在控制台输入数字。多输几次你会发现不管你输入什么数字,你输1次不是1的数字,然后再输1,结果是1,;输2次不是1的数字,再输1结果就是4,输3次不是1的输结果是8......以此类推,这样看来这个方法的结果是和你输入不是1的数字的次数有关,是【次数*2*当x为1是返回的值(你写的当x为1是反会1)】。这样的话你的scanner手动输入就没意义了...
出现这种状况的原因是比如你之前输入了3次不是1的数,第4次输入1 ,那么因为你使用递归的原因,第4次调用f方法返回的是1*2,然后执行第3次f方法返回(1*2)*2,然后执行第2次f方法返回((1*2)*2)*2,这样依次类推。
可能是我的方式与你实际想要的效果有出入,所以可能我的方式不对,你可以参考参考。。。
而且可能说的有点混乱....能看懂的话就谅解一下...呵呵
第一点:你既然将变量x作为参数传入f方法中那么为什么在方法中又要使用scanner为x重新赋值呢,这样的话你方法的参数x就没作用了啊 ,你还不如在f方法中里面声明x变量,然后f方法不要参数。然后return (f-1)*2改成return f()*2
第二点:你可以尝试在main方法中使用System.out.println(f());打印,然后在控制台输入数字。多输几次你会发现不管你输入什么数字,你输1次不是1的数字,然后再输1,结果是1,;输2次不是1的数字,再输1结果就是4,输3次不是1的输结果是8......以此类推,这样看来这个方法的结果是和你输入不是1的数字的次数有关,是【次数*2*当x为1是返回的值(你写的当x为1是反会1)】。这样的话你的scanner手动输入就没意义了...
出现这种状况的原因是比如你之前输入了3次不是1的数,第4次输入1 ,那么因为你使用递归的原因,第4次调用f方法返回的是1*2,然后执行第3次f方法返回(1*2)*2,然后执行第2次f方法返回((1*2)*2)*2,这样依次类推。
可能是我的方式与你实际想要的效果有出入,所以可能我的方式不对,你可以参考参考。。。
而且可能说的有点混乱....能看懂的话就谅解一下...呵呵
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你这样写,还能循环输入。
public static int f(int x) {
if (x == 1)
return 1;
else
return f(x - 1) * 2;
}
public static void main(String[] args) {
int x = 0;
while (true) {
System.out.println("请输入整数:");
Scanner sc = new Scanner(System.in);
x = sc.nextInt();
System.out.println("结果:" + f(x));
}
}
public static int f(int x) {
if (x == 1)
return 1;
else
return f(x - 1) * 2;
}
public static void main(String[] args) {
int x = 0;
while (true) {
System.out.println("请输入整数:");
Scanner sc = new Scanner(System.in);
x = sc.nextInt();
System.out.println("结果:" + f(x));
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
最好在这个
Scanner sc=new Scanner(System.in);
后面写一句这个
System.out.println("请输入一个字符串:");
不然你在控制台不容易看到。。
Scanner sc=new Scanner(System.in);
后面写一句这个
System.out.println("请输入一个字符串:");
不然你在控制台不容易看到。。
追问
问题是我这个输出不了.. Main函数里面肿么写
追答
你上面那个方法f()要一个参数,然后你下面又把那个数X给覆盖了,你到底要写个什么啊
dg.f(8) 括号你传个数字就好了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public static void main(String[] args) {
dg.f();
}
dg.f();
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询