函数作业:
//第一题:求1! + 2! + 3! + 4! + …… + 10!的和
// function fn(n){
// var sum = 0;
// for(var i = 1; i <= n; i++){
// var num = 1;
// for(var j = 1; j <= i; j++){
// num = num * j;
// }
// sum = sum + num;
// console.log("阶乘值:" + num)
// }
// console.log("所有阶乘之和:" + sum)
// }
// fn(10)
//第二题:求一个三位数,该三位数等与其每位数字的阶乘之和。
//先用函数fn1封装阶乘的运算,在调用fn2进行条件循环判断求解满足表达式的值。
//函数整体可以作为另外一个函数的参数.
// function fn1(i){
// var val = 1;
// for(var num = 1; num <= i; num++){
// val *= num;
// }
// return val;
// }
// function fn2(){
// for(var n = 100; n < 1000; n++){
// var x = parseInt(n / 100);
// var y = parseInt(n / 10) % 10;
// var z = n % 10
// if(n == fn1(x) + fn1(y) + fn1(z)){
// console.log(`满足条件的三位数有:${n} = ${x}! + ${y}! + ${z}!`)
// }
// }
// }
// fn2()
//第三题:编写一个函数rev用于将一个整数前后倒置。
//例如rev(12345)将返回54321,rev(123)将返回321整数位数不限制,多少位都行。
//方法一:
//先用函数weis封装求解有多少位数的运算,在调用rev求解实参的倒置结果。
// function weis(n){
// for(var i = 1; true; i++){
// var num = parseInt(n / Math.pow(10,i));
// if(num < 1){
// return i;
// }
// }
// }
// function rev(m){
// var s = weis(m);
// var val = 0;
// for(var i = 1; i <= s; i++){
// val += parseInt(m / Math.pow(10,i-1)) % 10 * (Math.pow(10,s-i));
// }
// console.log(`${m}倒置后的数为:${val}`);
// }
// rev(12)
// rev(123)
// rev(12345)
// rev(10305)
// rev(456789321)
//方法二:
// function rev(n){
// var str = String(n) //转换为字符串类型
// var arr = str.split("") //字符串切割为数组
// var newArr = arr.reverse() //倒置数组数据
// var num = newArr.join("") //通过join的参数作为衔接符。将数组的每条数据拼接成字符串
// console.log(`${n}倒置后为:${+num}`)
// }
// rev(12)
// rev(123)
// rev(10305)
// rev(234689)
// rev(456789321)
//方法三:
// function rev(n){
// var num = String(n);
// var res = '';
// for(var i = num.length - 1; i >= 0; i--){
// res += num[i];
// }
// console.log(`${num}倒置后为:${res}`);
// return res;
// }
// rev(12)
// rev(123)
// rev(10305)
// rev(234689)
// rev(456789321)
//第四题:如果整数A的全部约数(包括1,不包括A本身)之和等于B,且整数B的全部约数(包括1,不包括B本身)之和等于A,
//则称整数A和B是一对亲密数。求3000 以内的全部亲密数。
//先用函数sum封装求解约数满足条件内和的运算,在进行条件循环判断求解满足表达式的亲密数对。
//函数整体可以作为另外一个函数的参数。
//3000以内的亲密数对有: //220 284
//1184 1210
//2620 2924
//因:A = sum(B),B = sum(A)
//则:A = sum(sum(A)),B = sum(sum(B))
// function sum(n){
// var sum = 0;
// for(var i = 1 ; i <= n / 2;i++){
// if(n % i == 0){
// sum += i;
// }
// }
// return sum;
// }
// for(var k = 1; k < 3000; k++){
// if(sum(sum(k)) == k && k != sum(k)){
// console.log(sum(k),k);
// }
// }
//第五题:写一个函数实现加法计算机。
//可以通过访问arguments对象的length属性可以获知有多少个参数传递给了函数。
// function add(){
// var res = 0;
// for(var i = 0; i < arguments.length; i++){
// res += arguments[i];
// }
// console.log(res);
// }
// add(1,2)
// add(1,2,3)
// add(2,3,4.5,6.5)
//第六题:定义一组函数,输入数字,逆转并输出汉字形式。
// function changeover(n){
// switch(n){
// case "0":
// return "零";
// case "1":
// return "壹";
// case "2":
// return "贰";
// case "3":
// return "叁";
// case "4":
// return "肆";
// case "5":
// return "伍";
// case "6":
// return "陆";
// case "7":
// return "柒";
// case "8":
// return "捌";
// case "9":
// return "玖";
// }
// }
// function rev(){
// var num = prompt("请输入你的值:");
// var str = "";
// for (var i = num.length-1;i >= 0; i--) {
// str += changeover(num[i]);
// }
// alert(str);
// }
// rev()