习题

最小值

前一章介绍了标准函数Math.min,它可以返回参数中的最小值。我们现在可以构建相似的东西。编写一个函数min,接受两个参数,并返回其最小值。

  1. // Your code here.
  2. console.log(min(0, 10));
  3. // → 0
  4. console.log(min(0, -10));
  5. // → -10

递归

我们已经看到,%(取余运算符)可以用于判断一个数是否是偶数,通过使用% 2来检查它是否被 2 整除。这里有另一种方法来判断一个数字是偶数还是奇数:

  • 0是偶数

  • 1是奇数

  • 对于其他任何数字N,其奇偶性与N–2相同。

定义对应此描述的递归函数isEven。 该函数应该接受一个参数(一个正整数)并返回一个布尔值。

使用 50 与 75 测试该函数。想想如果参数为 –1 会发生什么以及产生相应结果的原因。请你想一个方法来修正该问题。

  1. // Your code here.
  2. console.log(isEven(50));
  3. // → true
  4. console.log(isEven(75));
  5. // → false
  6. console.log(isEven(-1));
  7. // → ??

字符计数

你可以通过编写"string"[N],来从字符串中得到第N个字符或字母。 返回的值将是只包含一个字符的字符串(例如"b")。 第一个字符的位置为零,这会使最后一个字符在string.length - 1。 换句话说,含有两个字符的字符串的长度为2,其字符的位置为 0 和 1。

编写一个函数countBs,接受一个字符串参数,并返回一个数字,表示该字符串中有多少个大写字母"B"

接着编写一个函数countChar,和countBs作用一样,唯一区别是接受第二个参数,指定需要统计的字符(而不仅仅能统计大写字母"B")。并使用这个新函数重写函数countBs

  1. // Your code here.
  2. console.log(countBs("BBC"));
  3. // → 2
  4. console.log(countChar("kakkerlak", "k"));
  5. // → 4