Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

JavaScriptで数値を1に下げる


問題

引数としてnumを受け取るJavaScript関数を作成する必要があります。

  • この関数は、numに対して次の2つの操作のみを実行できます。numが偶数の場合、numをnum/2に置き換えることができます

  • numが奇数の場合、numをnum+1またはnum-1に置き換えることができます。

これらの2つの演算の組み合わせのみを使用して、numを1に下げるために必要な最小演算の数を計算するために、関数が必要です。関数は最小演算数を返す必要があります。

たとえば、関数への入力が-

の場合
const num = 7;

その場合、出力は-

になります。
const output = 4;

出力の説明:

可能な最小の操作は-

であるため
7 -> 8 -> 4 -> 2 -> 1
or
7 -> 6 -> 3 -> 2 -> 1

このためのコードは-

になります
const num = 7;
const downToOne = (num = 1) => {
   let min = Number.POSITIVE_INFINITY;
   let stack = [{ num: num, step: 0 }];
   let set = new Set();
   let next;
   let item;
   while (stack.length) {
      item = stack.shift();
      if (item.num === 1) {
         if (min > item.step) {
            min = item.step;
         }
         continue;
      }
      if (set.has(item.num) || item.step >= min) {
         continue;
      }
      set.add(item.num);
      next = item.step + 1;
      if (item.num % 2 === 0) {
         item.num /= 2;
         stack.push({ num: item.num, step: next });
      } else {
         stack.push({ num: item.num - 1, step: next });
         stack.push({ num: item.num + 1, step: next });
      }
   }
   return min;
};
console.log(downToOne(num));

出力

コンソールの出力は-

になります
4

  1. 数値を10の累乗に切り捨てますJavaScript

    数値を取り込むJavaScript関数を作成する必要があります。この関数は、入力された数値に最も近い10の累乗を返す必要があります。 例- f(1) = 1 f(5) = 1 f(15) = 10 f(43) = 10 f(456) = 100 f(999) = 100 例 const num = 2355; const num1 = 346; const num2 = 678; const nearestPowerOfTen = (num) => {    let count = 0;    while(num > 1){  

  2. JavaScriptで数値を因数分解する

    引数として正の整数をとるJavaScript関数を作成する必要があります。関数は、入力された数値を正確に除算するすべての数値の配列を作成して返す必要があります。 例- 入力番号が-の場合 const num = 12; その場合、出力は-になります。 const output = [1, 2, 3, 4, 6, 12]; 例 以下はコードです- const findFactors = (num = 1) => {    let half = Math.floor(num / 2);    const res = [1]; // 1 wil