递推算法:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int n; //第几个数
int x=0; //F(n)
int y=1; //F(n+1)
int ans = 0; //F(n+2)
Scanner in = new Scanner(System.in);
n = in.nextInt();
if(n==0) ans=0;
else if(n==1) ans=1;
else {
for(int i=2;i<=n;i++)
{
ans=x+y;
x=y;
y=ans;
}
}
System.out.println(ans);
}
}
递归算法:
import java.util.Scanner;
public class Main {
static int fn(int n)
{
if(n==0)
return 0;
//递归出口2
else if(n==1 )
return 1;
else
return fn(n-1)+fn(n-2); //递归关系式
}
public static void main(String[] args) {
int n; //第几个数
int ans = 0;
Scanner in = new Scanner(System.in);
n = in.nextInt();
ans=fn(n);
System.out.println(ans);
}
}
**
import java.util.Scanner;
public class Main {
static int [][]a=new int [101][101];
public static void main(String[] args) {
int n;
Scanner in = new Scanner(System.in);
n = in.nextInt();
//输入数字三角形的值
for (int i=1; i<=n; i++)
{
for (int j=1; j<=i; j++)
{
a[i][j]=in.nextInt(); //输入原始数据
}
}
//递推开始
for (int i=n-1; i>=1; i--)//从最后一层逆推
{
for (int j=1; j<=i; j++)
{
if (a[i+1][j]>=a[i+1][j+1])
a[i][j]+=a[i+1][j]; //路径选择
else a[i][j]+=a[i+1][j+1];
}
}
System.out.println(a[1][1]);
}
}
**