首页 > 解决方案 > 更改添加顺序会更改结果

问题描述

更改程序第 11 行中的加法顺序会给出不同的答案。

function gcf(a,b){
  if(a%b === 0)
    return b;
  else 
    return gcf(b,a%b);
}

let x = {num: 3, den: 2};
let n = 1000;
let ans = 0;
for(i=0;i<n-1;i++){
  let num = x.den + x.num + x.den  ;
  let den = x.num + x.den;
  let g = gcf(num, den);
  num /= g;
  den /= g;
  x = {
    num: num,
    den: den
  }
  // console.log(i+2,x,x.num.toString().length > x.den.toString().length, x.num/x.den, g);
  if(x.num.toString().length > x.den.toString().length){
    ans+=1
  }
}
console.log(ans);

function gcf(a,b){
  if(a%b === 0)
    return b;
  else 
    return gcf(b,a%b);
}

let x = {num: 3, den: 2};
let n = 1000;
let ans = 0;
for(i=0;i<n-1;i++){
  let num = x.den + x.den + x.num;
  let den = x.num + x.den;
  let g = gcf(num, den);
  num /= g;
  den /= g;
  x = {
    num: num,
    den: den
  }
  // console.log(i+2,x,x.num.toString().length > x.den.toString().length, x.num/x.den, g);
  if(x.num.toString().length > x.den.toString().length){
    ans+=1
  }
}
console.log(ans);

这给出了 189

let num = x.den + x.num + x.den;

这给出了 158

let num = x.den + x.den + x.num;

怎么了?

** 求解有多少根 2 的小数逼近的分母位数小于分子位数。

标签: node.jsalgorithmmath

解决方案


推荐阅读