用递归思想,java代码实现下面这个题目:
已知: f(0)=2;f(1)=3;f(n)=f(n+2)-2f(n+1);
求f(20);
希望大家帮忙写下这个代码,谢谢了,我只知道用循环,但是不会用java表示那个表达式。
已知: f(0)=2;f(1)=3;f(n)=f(n+2)-2f(n+1);
求f(20);
希望大家帮忙写下这个代码,谢谢了,我只知道用循环,但是不会用java表示那个表达式。
调试欢乐多
System.out.println(fn(-1));
}
public static int fn(int n)
{
if(n==0)
return 2;
else if(n==1)
return 3;
return fn(n+2)-2*fn(n+1);
}
//楼主题目是不是给错了,这个fn(n+2)-2*fn(n+1)要改成
fn(n-2)-2*fn(n-1)
f(n) = f(n+2) - 2*f(n+1)
变换为:
f(n+2) = f(n) + 2*f(n+1)
代入:m=n+2 调整后即:
f(m) = f(m-2) + 2*f(m-1)现在应该会写递归了吧?
f(m) = f(m-2) + 2*f(m-1)
也即:
public static int fn(int n) {
if(n==0) return 2;
else if(n==1) return 3;
return fn(n-2)-2*fn(n-1);
}
改个变量名呐public static void main(String[] args) throws Exception {
System.out.println(fn(20));
} public static int fn(int n) {
if (n == 0)
return 2;
else if (n == 1)
return 3;
return fn(n - 2) + 2 * fn(n - 1);
}
if(m==0)
return 2;
if(m==1)
return 3;
else
return fid(m-2)+2*fid(m-1);
}
像2楼说得那样 求n=20时 m=22就行了吧
{ public Jaaaa()
{
// TODO Auto-generated constructor stub
} public static void main(String[] args)
{
@SuppressWarnings("resource")
Scanner scanner = new Scanner(System.in);
System.out.print("函数f(n),计算n,请输入一个整数:");
int tem = f(scanner.nextInt());
System.out.println("得到的值为:" + tem);
}
public static int f(int n)
{
if (n == 0)
return 2;
else if (n == 1)
return 3;
else
return f(n-2) + 2 * f(n - 1);
}
}
不知道可以不,试验下,好像是对的
import java.util.Scanner;public class ComputeF
{
public static void main(String [] args)
{
Scanner input = new Scanner(System.in); //输入一个数字
System.out.println("input a number m is(m<=20):");
int m = input.nextInt();
System.out.println("F number at index"+m+"is"+cm(m));}
public static long cm(long m)//递归的实现
{
if(m ==0)
return 2;
else if (m ==1)
return 3;
else
return cm(m-2) -2*cm(m-1);
}
}
public static int funtion(int i) {
if (i == 0)
return 2;
else if (i == 1)
return 3;
else
return (funtion(i - 2) + 2 * funtion(i - 1));
}
public static void main(String []args){
int i = funtion(20);
System.out.println(i);
}}