本章我将给大家讲解使用Java实现求解n的阶乘,并且使用两种方式计算,一种是递归,一种是递推。
提示:以下是本篇文章正文内容,下面案例可供参考
递推:
是一种数学思维,举一个1-100的整数进行求和的案例:我们一般会先定义一个sum的初始值,然后开始通过for循环进行遍历1-100之间的所有整数,依次进行累加,最后返回一个结果。
递归:
如果同样解决上述问题,就可以既不需要创建sum这样的变量,也不需要使用for循环进行遍历,而是可以根据函数自身不断进行迭代,最后返回一个结果,相对来说会更简单一点。
/* 案例题目: 1.编程实现参数n的阶乘并返回 */ public class MultiTest { // 自定义成员方法将参数n的阶乘计算并返回 // 递推 int multi1(int n) { int num = 1; for(int i = 1; i <= n; i++) { num *= i; } return num; } public static void main(String[] args) { MultiTest m1 = new MultiTest(); // 递推方式实现 int result1 = m1.multi1(5); System.out.println("The multi result is " + result1); } }
> javac .\MultiTest.java > java MultiTest The multi result is 120
/* 案例题目: 1.编程实现参数n的阶乘并返回 */ public class MultiTest { // 自定义成员方法将参数n的阶乘计算并返回 // 递归 int multi2(int n) { if(n == 1) { return 1; } return n * multi2(n - 1); } public static void main(String[] args) { MultiTest m1 = new MultiTest(); // 递归方式实现 int result2 = m1.multi2(5); System.out.println("The multi result is " + result2); } }
> javac .\MultiTest.java > java MultiTest The multi result is 120
递归对于递推来说没有了定义变量和使用循环结构进行计算的复杂过程,而是通过函数自身不断自我调用(即为递归)来实现的计算,看似简单,其实对于新手来说可能不是很好理解。