🌲本文收录于专栏《Java入门练习100例》——试用于学完「Java基础语法」后的巩固提高及「LeetCode刷题」前的小试牛刀。
Java入门练习100例1-10源码 提取码: uqqe
题目描述
难度:简单
计算 1 + 1/2! + 1/3! + 1/4! + … + 1/20! 的值。
知识点
- 循环结构
- 阶乘的计算
- 初窥动态规划
解题思路
1.循环结构
观察算式的规律,从1-20,每次加1,循环20次。
2.阶乘的计算
n!
是为阶乘,等于1*2*3*4...(n-1)*n
3.初窥动态规划
动态规划,一直是算法中的难点,本次不做深度讲解,通俗的说一下。
就是把复杂问题简单化,比如4 的阶乘可以看到3 的阶乘再乘4,而3的阶乘可以看做2的阶乘再乘3,2的阶乘等于1乘2。
其实就是这样一个思想,可以看下leetcode《爬楼梯》这道题。
代码实现
/**
* 计算 1 + 1/2! + 1/3! + 1/4! + + 1/20! 的值
*/
public class question_06 {
public static void main(String args[]) {
double sum=0,a=1;
int i=1;
while(i<=20) {
sum=sum+a;
i=i+1;
//关键点,动态规划思想
a=a*(1.0/i);
}
System.out.println("sum="+sum);
}
}
输出结果
总结
上一节的问题:什么时候用for
?什么时候用while
?
答:其实两者区别不大,大多数情况都可以解决问题。只需记住一点:循环次数未知时用while。