繁体   English   中英

卡在SICP中的SICP练习1.1.7

[英]Stuck SICP Exercise 1.1.7 in Javascript

我已经决定尝试使用MIT SICP课程,但使用Javascript。

以下代码输出未定义,但应输出对5的平方根的相当准确的猜测。

我已经测试了所有较小的函数,并且它们都按预期工作,问题一定在递归的guessRoot()函数中,但是我似乎看不到问题。

var square = function(x) {
    return x * x;
};
var abs = function(x) {
    return x > 0 ? x : -x;
};
var goodEnough = function(g, x) {
    return abs(square(g) - x) < 0.01;
};
var average = function(x, y) {
    return (x + y) / 2;
};
var improve = function(g, x) {
    return average(g, (x / g));
};
var guessRoot = function(guess, x) {
    if (goodEnough(guess, x)) {
        return guess;
    } else {
        guessRoot(improve(guess, x), x);
    }
};
console.log(guessRoot(2.5, 5));

看起来您只是在递归步骤中缺少return

var guessRoot = function(guess, x) {
    if (goodEnough(guess, x)) {
        return guess;
    } else {
        return guessRoot(improve(guess, x), x); // ... here
    }
};

http://jsfiddle.net/mattball/TyLsL

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM