数値を指定すると、プログラムはその数値を得るために *3 または +5 のみを使用して一連の演算を返す必要があるため、2 つのパスがあります。このプログラムは、自分自身を呼び出すときにどの関数呼び出しを行うべきかをどのように知るのでしょうか? そして、各パスを呼び出す回数をどのように知るのでしょうか。言い換えれば、OR
使用する呼び出しとそれぞれの数を決定するために演算子がどのように使用されているかわかりませんfind()
。
function findSequence(goal) {
// we start at 1, and history is a string that will keep track of the operations
function find(start, history) {
// case when start and goal is 1.
if (start == goal)
return history; // return string containg 1
// case when we build start past what we needed
else if (start > goal)
return null;
else
// Dont understand this part!
return find(start + 5, "(" + history + " + 5)") ||
find(start * 3, "(" + history + " * 3)");
}
return find(1, "1");
}
document.write(findSequence(13));