Hi, I found following two codes output different values.
    
    
    import tables
    var n = 3
    var dp = initTable[int, int](0)
    proc dfs(x: int): int =
        if x < 2: return 0
        if x in dp: return dp[x]
        dp[x] = x
        dp[x] += dfs(x div 2)
        dp[x] += dfs((x+1) div 2)
        return dp[x]
    echo dfs(n)  # 3
    
    
    Run
    
    
    import tables
    var n = 3
    var dp = initTable[int, int](0)
    proc dfs(x: int): int =
        if x < 2: return 0
        if x in dp: return dp[x]
        dp[x] = x
        var y = dfs(x div 2)
        dp[x] += y
        y = dfs((x+1) div 2)
        dp[x] += y
        return dp[x]
    echo dfs(n)  # 5
    
    
    Run

Why these codes returns different reaults?

Reply via email to