JavaScript中的关于奇数或者偶数分之一之和的问题?

题目:填写一个函数,输入n为偶数时,调用函数求1/2 +1/4+1/6+ 。+1/n,当输入n为奇数时,调用函数求1 + 1/3 + 1/5+。1/n

 function res(n){
                        var sum = 0;
                        //for循环的意义就是看一共有多少个数字相加
                        for(i = 1; i <= n; i++){
                        //将实参n传入后,得出最后一个数字1/n
                         sum += 1 / n;
                        //  //从右往左数,每次的n - 2,后看循环是否成立,成立后把得出的新的n的值带入上面sum的式子中,即可得出
                         n -= 2;
                        }
                  if(n % 2 == 0 || n == 1){
                        return sum;
                  }else{
                        return(sum + 1);
                  }

            }

            document.write (res(3));

我上面这段代码输入奇数的时候为什么不return(sum + 1)而还是return sum?

n=3 然后 执行 n-=2 得出n=3-2; n=1 if里是或的关系 n==1满足所以执行 retrun sum

循环中 n在自减的同时,i在自增,肯定出问题,所以用 while循环比较妥当

function fn(num) {
  let sum = 0;
  while (num >= 1) {
    sum += 1 / num;
    num -= 2;
  }
  return sum
}

const num = 4;

console.log(num, fn(num));