首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

递归学习笔记,数的阶乘

2012-08-31 
递归学习笔记,求一个数的阶乘package com.ranges.test/**?* @fileName Test.java?* @description 递归学

递归学习笔记,求一个数的阶乘

package com.ranges.test;

/**
?* @fileName Test.java
?* @description 递归学习笔记,求一个数的阶乘
?* @time 2012-2-9
?* @author wusongti
?*
?*/
public class Test {
?static int multiply(int n) {
??/*
?? * n=1 1?? ??????? 向上返回?1
?? * n=2 2*multiply(1)? 向上返回?2*1=2???
?? * n=3 3*multiply(2)? 向上返回?3*(2*1)=6
?? * n=4 4*multiply(3)? 向上返回?4*(3*(2*1))=24
?? * n=5 5*multiply(4)? 向上返回?5*(4*(3*(2*1)))=120
?? *
?? * 注意:因为multiply(1)或multiply(0)返回的值为1
?? * ??? 所以就有 2*multiply(1)=2*1=2
?? * ??? 又因为multiply(2)符合递归条件,递归后可化为multiply(1)
?? * ??? 所以就有3*multiply(2)=3*multiply(1)=3*(2*1)=6
?? * ??? 因为multiply(3)递归后可化为multiply(2)
?? * ??? 所以4*multiply(3)=4*multiply(2)=4*(3*(2*1))=24
?? * ??? 以此类推,5*multiply(4)
?? * ??? 可化为5*multiply(3)=5*(4*(3*(2*1)))=120
?? */
??int factorial;//阶乘
??if (n == 1||n==0){
??? factorial=n;
??}else{
???factorial=n * multiply(n - 1);
??}
??System.out.println("向上返回:"+factorial);
??return factorial;
?}

?public static void main(String[] args) {
??System.out.println(multiply(5));
?}
}

热点排行