携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第11天,点击查看活动详情
-
题目:
-
小玉开心的在游泳,可是她很快难过的发现,自己的力气不够,游泳好累哦。已知小玉第一步能游2米,可是随着越来越累,力气越来越小,她接下来的每一步都只能游出上一步距离的98%。现在小玉想知道,如果要游到距离x米的地方,她需要游多少步呢。请你编程解决这个问题。
-
解题思路:
-
如果游泳距离小于等于2,那么由于小玉一次就能游两米所以,游泳次数count为1
-
所以给count初始值1,给小玉游泳的距离sum初始值为2 let sum = 2 let count = 1 ;
-
如果小玉游泳的距离sum小于目标距离x,则还需要游泳一次,即count++
-
由于每一步都只能游出上一步距离的98%,所以每次循环使 swimlength = swimlength * 0.98
-
小玉游泳的总距离 sum += swimlength
-
如果sum>=x时则退出循环
// 输入距离
let distance = 24.3;
// 封装函数
function swimTimes(x) {
// 初始化游泳距离
let swimlength = 2
let sum = 2
let count = 1
while (sum < x) {
count++
swimlength = swimlength * 0.98
sum += swimlength
}
return count
}
console.log(swimTimes(distance));
-
题目:
-
幼稚园终于又有新的作业了。 老师安排同学用发给同学的4根木棒拼接成一个三角形。 当然按照正常的逻辑,如果不能拼接成三角形。 必然要折断某个木棍来拼接三角形。 可是懒惰的小艺当然不会费力了! 如果拼接不成三角形小艺就会把它凭借成类似边长 1 1 2的伪三角形。 如果伪三角形都拼接不成那就不交作业
-
此处举出两种解题方法
-
第一种解题方法 排序后暴力枚举
-
解题思路:
-
首先我们判断三根木棒能否拼成三角形的方法是 如果较小的两个边之和大于最大的边则构成三角形,相等则是伪三角形,小于则拼不成三角形.
-
由于判断三角形的方法要从较小的边之和与大边比较,于是我们先把存着边的长度的数组进行从小到大排序,使用数组的sort方法 data.sort((a, b) => a - b)
-
穷举法,如果第一条边加第二条边大于第三条边,或者第二条边加第三条边大于第四条边,则存在普通三角形return 1;
-
如果不成立则else if 如果第一条边加第二条边等于第三条边,或者第二条边加第三条边等于第四条边,则存在伪三角形return 0;
-
如果都不成立则构不成普通三角形和伪三角形;return -1;
// 输入四根木棍长度录入数组
let arr = [1, 2, 3, 3]
function iftriangle(data) {
// 先对数组从小到大排序
data.sort((a, b) => a - b)
if (data[0] + data[1] > data[2] || data[1] + data[2] > data[3]) {
return 1
} else if (data[0] + data[1] == data[2] || data[1] + data[2] == data[3]) {
return 0
}
return -1
}
console.log(iftriangle(arr));
- 第二种解题方法 排序后 for循环遍历
- 解题思路:
- 首先我们判断三根木棒能否拼成三角形的方法是 如果较小的两个边之和大于最大的边则构成三角形,相等则是伪三角形,小于则拼不成三角形.
- 由于判断三角形的方法要从较小的边之和与大边比较,于是我们先把存着边的长度的数组进行从小到大排序,使用数组的sort方法 data.sort((a, b) => a - b)
- for循环,如果第一条边加第二条边大于第三条边,或者第二条边加第三条边大于第四条边,
- 注意:需要i<2,因为存在i+2
- (data[i] + data[i + 1] > data[i + 2]
- 则存在普通三角形return 1;
- 如果不成立则else if 如果第一条边加第二条边等于第三条边,或者第二条边加第三条边等于第四条边,
- data[i] + data[i + 1] == data[i + 2]
- 则存在伪三角形return 0;
- 如果都不成立则构不成普通三角形和伪三角形;return -1;
// 输入四根木棍长度录入数组
let arr = [1, 2, 3, 3]
function iftriangle(data) {
// 先对数组从小到大排序
data.sort((a, b) => a - b)
for (let i = 0; i < 2; i++) {
if (data[i] + data[i + 1] > data[i + 2]) return 1
}
for (let i = 0; i < 2; i++) {
if (data[i] + data[i + 1] == data[i + 2]) return 0
}
return -1
}
console.log(iftriangle(arr));