我正在编写一个计算递归数学问题的代码,名为foo。
条件应该是,
如果n < 4
:foo(n) = n
如果n >= 4
:foo(n) = n + foo(n - 1) + 2*foo(n-2)
。
public class foo {
public static int foo(n) {
if(n < 4) {
return n;
} else if(n >= 4) {
}
}
public static void main(String[] args) {
}
}
我被困在这里...... 我的最终目的是陈述foo(1),foo(2),foo(3),foo(4),foo(5),foo(6),foo(7)的值。
另外,我允许将main方法放在那个foo类中吗?
答案 0 :(得分:2)
您正在寻找以下功能:
public static int bar(int n){
if(n < 4){
return n;
}
return n + bar(n - 1) + 2*bar(n-2);
}
首先,如果您只想要一个直接从main
调用的函数,它必须是static
,因为您不允许从静态上下文中调用非静态方法
static
函数(方法)在类上调用,而不是在对象上调用。因此,无需创建对象 - 只需执行Foo.bar(anyInt)
。
然后,您需要检查n是否小于4 - 如果是,return n
。
不需要else
子句,因为如果我们返回内部,我们将不再执行该函数的代码,因为return
也意味着exit this function now
。< / p>
然后,请遵循Java命名策略,因此请使用大写字母(Foo
而不是foo
)启动类名。 foo
是字段,变量或方法的完美名称,但不适用于类。
代码最终应该是:
public class Foo {
public static int bar(int n){
if(n < 4){
return n;
}
return n + bar(n - 1) + 2*bar(n-2);
}
public static void main(String[] args) {
for (int i = 1; i < 8; i++) {
System.out.println("bar(" + i + ") is " + Foo.bar(i));
}
}
}
输出将是:
>bar(1) is 1
>bar(2) is 2
>bar(3) is 3
>bar(4) is 11
>bar(5) is 22
>bar(6) is 50
>bar(7) is 101
答案 1 :(得分:1)
以下方法也适用。
public static int foo(int n) {
return n < 4 ? n : (n + foo(n-1) + (2*foo(n-2)));
}
答案 2 :(得分:0)
public static void main(String[] main) {
// a loop runs to get value of foo(1)...foo(7)
for (int i = 1; i <= 7; i++) {
// the returned value is printed over here
System.out.println(foo(i));
}
}
public static int foo(int n) {
// this goes according to your formulae
if (n < 4) {
return n;
}
else {
// by using recursion we are evaluating the value
// here foo(n-1) and foo(n-2) provides the required
// values which is being added to 'n' and being returned
return (n + foo(n - 1) + 2 * foo(n - 2));
}
}
答案 3 :(得分:-1)
这样做,它应该有效:
public class foo {
public static int mfoo(n)
{
if(n < 4) return n; //no need for else if
else return n + foo(n - 1) + 2*foo(n-2);
}
public static void main(String[] args)
{
int n = 10; //number to calculate for
System.out.println(foo(n));
}
}
如果要直接执行主方法,可以将主方法保留在foo
类中。如果你想从另一个类中执行它,在该类中创建main()
函数,并像这样调用它:
public static void main(String[] args)throws IOException{
foo newFoo = new foo();
System.out.println(newFoo.mfoo(10));
注意:不要将您的方法命名为类名(foo)。 仅构造函数可以执行此操作,这是 NOT 构造函数。