练习1:定义函数,计算阶乘和:1! + 2! + 3! + 4! + 5!
一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!
n!=1×2×3×...×(n-1)×n
阶乘亦可以递归方式定义:0!=1,n!=(n-1)!×n
// 方法一
function getSum() {
let sum = 0;
let n = 1;
for (let i = 1; i <= 5; i++) {
n *= i;
sum += n;
}
return sum;
}
let t = getSum();
console.log(t);
// 方法二
function getSum1() {
let sum = 0;
for (let i = 1; i <= 5; i++) {
let n = 1;
for (let j = 1; j <= i; j++) {
n *=j;
}
sum += n;
}
return sum;
}
let t = getSum1();
console.log('1! + 2! + 3! + 4! + 5! = ',t);
练习2:定义一个函数,返回所有的水仙花数
水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153。
function getNum() {
let arr = []; //保存水仙花数的数组
for (let i = 100; i <= 999; i++) {
// 1.拆分三位数
let bai = parseInt(i / 100);
let shi = parseInt(i / 10) % 10;
let ge = i % 10;
// 2.求各位数字的立方和
if (i == bai ** 3 + shi ** 3 + ge ** 3) {
arr.push(i)
}
}
return arr;
}
let t = getNum();
console.log(t);
练习3:定义一个函数,计算n!(n的值由外部传入)
function getSum(n) { //n是形参,是定义函数时,放在函数名后的"()"中
let t = 1;
for (let i = 1; i <= n; i++) {
t *= i;
}
return t;
}
let k = 8;
let m = getSum(k);
console.log(m);
练习4:定义一个函数,用于输出一个二维数组
function showArray(arr) { //arr是形参
let str = '';
for (let i = 0; i < arr.length; i++) { // 外循环:循环变量i是行下标
for (let j = 0; j < arr[i].length; j++) { //内循环:循环变量是列下标
str +=arr[i][j] + '\t';
}
str += '\n';
}
console.log(str);
}
let a1 = [[1,2,3],[4,5,6],[7,8,9]];
showArray(a1); //a1是实参
let a2 = new Array(new Array(11,22,33,44),new Array(44,55,66,77));
showArray(a2); //a2是实参
练习5:定义一个函数,用来判断是否为素数
function isPrime(n) {
// let flag = true //假设n是素数
for (let i = 2; i < n; i++) {
if (n % i == 0) {
// flag = false;
// break;
return false;
}
}
return true;
}
// let k = 15;
// console.log(isPrime(k));
// 输出100以内的所有素数
let str = '';
for (let k = 2; k <= 100; k++) {
if (isPrime(k)) {
str +=k +'\t';
}
}
console.log(str);
课堂作业1:定义一个函数,返回1000以内的完数
完数:某个数的所有因子(不包含自身)之和等于他本身
function getPerfectNum(n) { //判断n是否是完数
let sum = 0; //sum用于累加因子
for (let i = 1; i < n; i++) {
if (n % i == 0) { //条件为真,表示i是n的因子
sum +=i;
}
}
if (sum ===n) { //sum存放n的所有因子之和
return true;
} else{
return false;
}
}
// let k = 20;
// console.log(getPerfectNum(k));
// 输出1000以内的所有完数
for (let j = 1; j <= 1000; j++) {
if (getPerfectNum(j)) {
console.log(j);
}
}