OU开始写博客了
已经学习java一个多月,内容挺多的,我会慢慢补齐的。
今天记录一道之前做过的习题:用户输入一个数字n,求n的阶乘(用函数递归的方法)
package day10;
import java.util.Scanner;
/**
*
* @author Administrator
*2018年5月21日09:16:55
* 函数的递归
*/
public class Test3 {
//主函数,程序的入口
public static void main(String[] args) {
//用户输入整数
System.out.println("请输入一个整数:");
//导入扫描仪
Scanner input=new Scanner(System.in);
//int 类型接收用户输入整数
int n=input.nextInt();
//输出结果
System.out.println(n+"的阶乘为"+factorial(n));
}
//用函数计算n的阶乘
public static int factorial(int n) {
//n=1时赋初值返回
if(n==1) {
return 1;
}
//回推并递推
int a=factorial(n-1);
//返回结果
return n*a;
}
}
函数的递归分为回推和递推两个阶段:(就上题而言)
回推:函数接收到参数n,判断n是否满足if条件,不满足则执行下一步,调用函数自身,往回调用返回值。直到满足if条件,回推结束
递推:接受到满足if条件的返回值时,开始递推,一层层递进,求出最终n的阶乘并返回。
好的,就到这里了,如果有不足之处欢迎提出
加油,向CPDA奋进!!