Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
314 views
in Technique[技术] by (71.8m points)

ruby - Finding the longest collatz sequence for starting numbers < 100

def longest_collatz_sequence(n)
    longest_sequence = []
    (1..n).each do |a|
        sequence = [a]
        until sequence.last == 1
            if a % 2 == 0
                sequence.push(a/2)
            else
                sequence.push(3a + 1)
            end
        end
        if sequence.length > longest_sequence.length
            longest_sequence = sequence
        end
    end
    longest_sequence
end

longest_collatz_sequence(100)

When I run the algorithm, I'm told that there is an unexpected identifier within 3a + 1 and the program doesn't run. Where is my problem?

Thanks!

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Make that 3*a, you left out the actual multiplication.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...