2/1,3/2,5/3,8/5,13/8,21/13…的前20项之和。(记录)
拆开来看 我们很快发现 数字都是以斐波那契数列规律衍生出来的
因此我们可以将 第1位和第2位数字确定下来 方便后面求和
数字游戏题 锻炼逻辑思维能力
package com.date808;
import java.math.BigDecimal;
import java.util.Scanner;
/**
* @apiNote : 2/1,3/2,5/3,8/5,13/8,21/13...的前20项之和。
* 拆开来看 我们很快发现 数字都是以斐波那契数列规律衍生出来的
* 因此我们可以将 第1位和第2位数字确定下来 方便后面求和
* 数字游戏题 锻炼逻辑思维能力
*/
public class NumberGames01 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int input;
try {
System.out.println("请输入你要累加到第几位位:(输入整数且大于0)");
input = scanner.nextInt();
String value = String.valueOf(getValue(input));
System.out.println("累加到" + input + "位时的值:" + value);
} catch (Exception e) {
e.printStackTrace();
}
}
public static BigDecimal getValue(int n) {
BigDecimal result = new BigDecimal(0.0);
if (n > 0) {
// molecule = 2; 分子 denominator 分母
for (int i = 1; i <= n; i++) {
System.out.print(molecule(i) + "/" + denominator(i) + " ");
BigDecimal n1 = new BigDecimal(molecule(i));
BigDecimal n2 = new BigDecimal(denominator(i));
BigDecimal temp = n1.divide(n2, 2, BigDecimal.ROUND_HALF_DOWN);
result = result.add(temp);
}
} else {
System.out.println("输入异常错误!");
return result;
}
return result;
}
public static int molecule(int n) {
if (n == 1) {
return 2;
}
if (n == 2) {
return 3;
}
if (n == 0) {
return -1;
}
return molecule(n - 1) + molecule(n - 2);
}
public static int denominator(int n) {
if (n == 1) {
return 1;
}
if (n == 2) {
return 2;
}
if (n == 0) {
return -1;
}
return denominator(n - 1) + denominator(n - 2);
}
}