周末练习题
// 5.题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
// 以后每天早上都吃了前一天剩下 的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
var peach = 1
for(i=9;i>=1;i--){
peach = (peach*2)+2
}
console.log(peach);
// 6.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
var sum = 0;
var x = 2;
var y = 1;
var temp = 0;
for(i=0;i<=20;i++){
sum+=x/y;
temp = x;
x=x+y;
y=temp;
}
console.log(sum);
</script>
// 7.有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。
// 问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。
// 请问第五个人多大?
// 1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。
// 要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。
var year = 10;
for (i = 4; i >= 1; i--) {
year = year + 2;
}
console.log(year);
// 8.打印杨辉三角
// 1
// 1 1
// 1 2 1
// 1 3 3 1
// 1 4 6 4 1
// 1 5 10 10 5 1
// 1 6 15 20 15 6 1
// 1 7 21 35 35 21 7 1
// 1 8 28 56 70 56 28 8 1
// 1 9 36 84 126 126 84 36 9 1
function yanghui(row) {
// 创建一维数组
var arr = new Array(row)
// 创建二维数组
for (var i = 0; i < arr.length; i++) {
arr[i] = new Array(i + 1)
}
// 循环赋值
for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < arr[i].length; j++) {
if (j === 0 || i === j) {
arr[i][j] = 1
} else {
arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1]
}
}
}
// 打印三角
for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < arr[i].length; j++) {
document.write(arr[i][j] + " ")
}
document.write("<br/>")
}
}
yanghui(10)
// 9.输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
var arr = [-1, -2, 1, 10, 4, 5, 8];
var maxIndex = 0;
var minIndex = arr.length - 1;
for (var i = 1; i < arr.length; i++) {
if (arr[i] > arr[maxIndex]) {
maxIndex = i
} else if (arr[i] < arr[minIndex]) {
minIndex = i;
}
}
var max = arr[0];
arr[0] = arr[maxIndex];
arr[maxIndex] = max;
var min = arr[arr.length - 1];
arr[arr.length - 1] = arr[minIndex];
arr[minIndex] = min;
console.log(arr);
// 10.找到数组 [-1,-2,1,10,4,5,8] 中的最大值
var arr = [-1, -2, 1, 10, 4, 5, 8];
function maxNumber(arr) {
var max = arr[0]
for (var i = 1; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i]
}
};
return max
}
console.log(maxNumber(arr));
var arr = [-1, -2, 1, 10, 4, 5, 8];
// 12.打印菱形
var i, j, k;
for (i = 1; i <= 4; i++) {
//前四行
for (j = 1; j <= 4 - i; j++) {
document.write(" "); //4-j 控制空格的数量
}
for (k = 1; k <= 2 * i - 1; k++) {
document.write("* "); //2*i-1 控制*的数量
}
document.write("<br/>");
}
//后三行
for (i = 1; i <= 3; i++) {
for (j = 1; j <= i; j++) {
document.write(" "); //i控制空格的数量
}
for (k = 1; k <= 7 - 2 * i; k++) {
document.write("* "); // 7-2*i控制*的数量
}
document.write("<br/>");
}
<script>
// 11.有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),
//凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
//写一个数组 存所有的人
function fn(n){
//初始化一个数组
var nums = []
for(var i=0;i<n;i++){
//设置所有的内容都是没有数过的
nums[i] = false
}
//报数
var count = 0
var index = 0
var total = nums.length
while(total>1){
if(!nums[index]){
count++
//数到了3 将total-1
if(count==3){
count = 0
nums[index] = true //表示已经数到了3
total --
}
}
index++
//数到最后重新循环
if(index==nums.length){
index = 0
}
}
//只要拿出里面为false哪个下标就是对应的位置
for(var index in nums){
if(!nums[index]){
return Number(index)+1
}
}
}
console.log(fn(10));
</script>