个人名片:
博主:酒徒ᝰ.
个人简介:沉醉在酒中,借着一股酒劲,去拼搏一个未来。
专栏:PTA习题及解析
介绍:记录了博主在pta学习练题的一些方法与笔记。
前言
1.简介
“PTA程序设计类实验辅助教学平台”是由浙江大学主导,杭州百腾教育科技有限公司管理运营,全国高校教师共同建设的程序设计类课程的辅助教学平台。目前,全国538所高校参与,3152位教师共同建设出66095道高质量题目,学生注册用户已达136万;共有14类固定题目集(涵盖C语言、JAVA语言、Python语言、数据结构、数据库系统和中国高校计算机大赛题库等方面)和55类专业课程题目集(涵盖计算机类、电子类、文学类、外语类及华为认证)。包含判断题、填空题、单选题、多选题、程序填空题、函数题、编程题、主观题、多文件编程题和SQL编程题10种题目类型。
2.优点
- 支持20万人同时在线
- 支持多种题型
- 支持多种判题模式
- 为教学质量提供全方位保障
- 即时的答疑系统
一、题目
编写求n!的程序。要求:编写一个函数实现求出给定的n的值的阶乘。主函数负责确定n的值、调用自定义的函数,并输出计算结果。
输入格式:
输入一个任意整数n的值。
输出格式:
若n=0或n=1,则n!=1;若n<0,输出“给定的数<0,no value!no value!”的结果。
输入样例:
在这里给出一组输入。例如:
5
输出样例:
在这里给出相应的输出。例如:
5!=120
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
二、代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
if(n == 0 || n == 1){
System.out.println("n!=1");
}else if(n < 0){
System.out.println("给定的数<0,no value!no value!");
}else {
int m = 1;
for (int i = 1; i <= n; i++) {
m = m * i;
}
System.out.println(n + "!=" + m);
}
}
}
三、笔记与分析
- 程序调用自身的编程技巧称为递归( recursion)。递归作为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。
- 递归算法一般用于解决三类问题:
(1)数据的定义是按递归定义的。
(2)问题解法按递归算法实现。
(3)数据的结构形式是按递归定义的。