剑指offer:孩子们的游戏(圆圈中最后剩下的数)

定义个返回值为int型的LastRemaining_Solution函数,有两个整形参数n、m。当n=0时,返回-1当错误。当n=1时,返回0作为剩下的数字,else语句,没有满足的n-1,m不变来递归调用自身,对递归调用的结果+m,从当前的位置走m步,取模确保在当前圆圈中的合法范围内。

class Solution {
public:
    int LastRemaining_Solution(int n, int m) {
        if(n==0) return -1;
        if(n==1) return 0;
        else
            return(LastRemaining_Solution(n-1,  m)+m)%n;
    }
};

#剑指offr##23届找工作求助阵地#
全部评论

相关推荐

思念SiN:你这里没有通过的主要原因应该是计算平均分数的时候,在你贴的代码的第23行: ```c b[i]=(sum-max-min)/(m-2); ``` 等式的右边实际上是两个`int`类型的变量在做除法,C语言里面得到的结果会是这个除法的整数部分,余数部分被舍弃了,也不会自动变成浮点数去做除法。所以虽然你使用了`b[i]`这个浮点数去接收结果,但是等式右边除法是先得到了一个整数,然后再被转换为浮点数再赋值给了`b[i]`。你可以按下面这样,在做除法之前,先进行类型转换,就能得到期望的结果: ```c b[i]=(float)(sum-max-min)/(float)(m-2); ```
点赞 评论 收藏
分享
01-13 16:55
已编辑
大连理工大学 运营
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务