java简单递归求阶乘示例 您所在的位置:网站首页 java中递归 java简单递归求阶乘示例

java简单递归求阶乘示例

2023-11-18 15:37| 来源: 网络整理| 查看: 265

java中递归求阶乘

1. 什么是阶乘? 做这个题目首先弄清什么叫阶乘,一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1,即3的阶乘为3 * 2 * 1=6。 2. 什么是递归? 简单来说就是程序自己调用自己,当满足一定条件时跳出。 3. 具体实现方法

一般来说要跳出递归就需要使用return,那么我们就需要用有返回值的方法定义,这里我把方法名定义为test public int test(int n){ int product=0; //定义product来存放阶乘的乘积 //搭好架子一步一步来 return product;//返回乘积 }

这样我们就把架子搭好了

然后回到递归我们发现当n为0的时候阶乘为1我们就需要把这个情况写出来。 public int test(int n){ int product=0; if(n==0){ return 1;//为0的情况我们直接返回1 } return product; } 处理好这两种情况我们再继续往下走,再进行下一步之前我们来看看阶乘有什么特性或是规律来使用递归。 第一组:2!=2 * 1 第二组:3!=3 * 2 * 1 第三组:4!=4 * 3 * 2 * 1 仔细观察第二组的3 * 2 * 1中的2 * 1是不是就是第一组相当于3!=3 *(2!)。 那第三组4!=4 * 3 * 2 * 1中的3 * 2 * 1是不是就是第二组的乘积 相当于4!=4 *(3!)。 规律已经显而易见n!=n * (n-1)!

让我们带入代码,当n=1时

public int test(int n){ int product=0; if(n==0){ return 1;//为0的情况我们直接返回1 } if(n==1){ product=1;//为1是那就是1!=1*(1-1)! 1!=1*(0!) } return product; }

当为n时直接上代码,我再解读一遍我相信你一定能弄明白

public int test(int n){ int product=0; if(n==0){ return 1;//为0的情况我们直接返回1 } if(n==1){ product=1; } product=n*test(n-1);//关键代码product储存递归值调用test也就是本身 //继续执行,当初次递减到1时跳出返回最后答案 return product; }

关键代码实现递归!!!product=n * test(n-1);这里的test就是调用自己 我们设想n=3,将3带入程序走一遍,为3时跳过了为0为1的情况直接进入product=n * test(n-1);带入3为 3 * test(2) ,这里程序并没有往下return,而是调用了本身就是test方法来执行 test(2)。 继续往下当2传入程序为2 * test(1); 也没有跳出,所以最后放n逐次递减为1时计算3 * 2 * 1才跳出最后的答案

最后递归的问题就这样完成了,可能我讲得有点复杂化了,但是最重要的还是找出规律才能使用递归,本身也就是自己调用自己去做相同的操作。


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有