确定函数的结果值是奇数还是偶数

时间:2016-04-04 06:10:54

标签: algorithm math

我正在解决一个冰雹问题,但如果冰雹以x

开头,你会得到长度,找到1的值

我认为可以确定,如果我改变奇数和偶数,并按照这样反转等式:

function r(len, prev, isEven) {
     if(len < 1) return prev;
     if(isEven) {
         return r(len - 1, prev * 2, !isEven);
     } else {
         return r(len - 1, (prev - 1) * 3, !isEven);
     }
}

现在我意识到它不仅仅是替代seq。我应该在这个问题中应用什么数学概念。

示例:

如果Len = 8,答案是6

自:

6 - &gt; 3 - &gt; 10 - &gt; 5 - &gt; 16 - &gt; 8 - &gt; 4 - &gt; 2 - &gt; 1

2 个答案:

答案 0 :(得分:2)

输出2^len:)

想象一下,对于len = 86是一个有效的答案,因为6 -> 3 -> 10 -> 5 -> 16 -> 8 -> 4 -> 2 -> 1

再次,2^len = 2^8 = 256也有效,因为256 -> 128 -> 64 -> 32 -> 16 -> 8 -> 4 -> 2 -> 1

答案 1 :(得分:1)

function r(len , pre){
    if (len <1) return prev
    if ((pre-1)/3 == 1 && (pre-1)%3== 0) || ((pre-1)/3 > 1 && (pre-1)%3 != 0) || (pre<=3 && pre>=1) { 
    return r(len-1 , 2*pre)
    }
    elsif((pre-1)/3 > 1 && (pre-1)%3 == 0){
    return r(len-1 , (pre-1)/3) 
    }   
}
相关问题