048 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 10 案例——阶乘的累加和

048 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 10 案例——阶乘的累加和

本文知识点:通过案例练习嵌套循环应用

案例练习——阶乘的累加和

案例题目:

048 01 Android 零基础入门  01 Java基础语法 05 Java流程控制之循环结构 10 案例——阶乘的累加和

问题核心解决思路:

2种运算,并且每种运算都是连续算很多次的。连续算很多次,我们考虑用循环;2种运算,我们考虑用嵌套循环。

具体的解决:

1、用外重循环做和的运算

2、用内重循环做阶乘的运算

程序代码及其执行结果:

048 01 Android 零基础入门  01 Java基础语法 05 Java流程控制之循环结构 10 案例——阶乘的累加和

以上程序代码计算结果有问题?问题何在?

048 01 Android 零基础入门  01 Java基础语法 05 Java流程控制之循环结构 10 案例——阶乘的累加和

问题出在:内重循环中的存放阶乘计算结果的s,没有重新赋值为1。导致第二轮之后的每一轮,执行内重循环时,s的值随着前面运算已经增加,产生了错误。

所以,解决方案很简单,对s重置为1

修改后的程序代码及其执行结果:完全无误

048 01 Android 零基础入门  01 Java基础语法 05 Java流程控制之循环结构 10 案例——阶乘的累加和

分析整个嵌套for循环的详细执行路程

注意点:

1、内重循环中的表达式2:j<=i

2、存放阶乘计算结果的变量s。要在外部循环中重置为1,才能确保每轮内重循环执行过程中,s有效无误。

求10的阶乘

程序执行结果无误

048 01 Android 零基础入门  01 Java基础语法 05 Java流程控制之循环结构 10 案例——阶乘的累加和

求50的阶乘——int范围问题

048 01 Android 零基础入门  01 Java基础语法 05 Java流程控制之循环结构 10 案例——阶乘的累加和

结果是负数,为什么?

因为结果的表示范围已经超出了int类型的表示范围了。所以发生了数据溢出,得到的结果就是一个负值了。

数据过大溢出怎么解决?改用long类型

048 01 Android 零基础入门  01 Java基础语法 05 Java流程控制之循环结构 10 案例——阶乘的累加和

改用long类型之后还是溢出怎么办?

048 01 Android 零基础入门  01 Java基础语法 05 Java流程控制之循环结构 10 案例——阶乘的累加和

Java中提供了处理大数据的类,可以使用。我们后面会学习。

上一篇:HTTP CHUNKED C实现


下一篇:在Toast里面显示图片