经典Java算法50题整理(21~30题)
第二十一题:求1+2!+3!+…+20!的和。
分析:写个求阶乘的方法,再在循环中调用即可
需要注意的点:sum和m的值应该用long类型
第二十二题:利用递归方法求5!。
分析:关键是递归的代码
需要注意的点:在截图中用的递归方法不是静态(static)的,所以如果想要使用需要先实例化这个方法所属于的类
第二十三题:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
分析:还是递归,和上一题差不多
需要注意的点:无
第二十四题:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
分析:用String类型来接收数据更方便(对本题的要求来说)
需要注意的点:无
第二十五题:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
分析:这题有很多种做法,我写的有点取巧,只是对这个题,题改一下就不行了
需要注意的点:无
还可以用列表(可以输入任意位数)(小伙伴们可以直接跳过不看,只是最近刚学,所以来写一下,其实用列表反而把事情弄复杂了)
第二十六题:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 判断第二个字母。
分析:可以用if或switch,用switch更简单一些,这里我直接用网上的代码了
需要注意的点:Java提供的方法里没有直接输入char型数值的方法,需要自己创建一个,当然,你也可以用其它方法
第二十七题:求100之内的素数
分析:素数就是只能被1和自己整除的数
需要注意的点:对数的历遍需要从3开始,但数字2也是素数,所以需要提前输出2
第二十八题:对10个数进行排序
分析:这种题很常见,有许多方法,比如冒泡法、选择法等
需要注意的点:注意下标
选择法:
冒泡法:
第二十九题:求一个3*3矩阵对角线元素之和
分析:用双层for循环,如果i==j就输出
需要注意的点:无
第三十题:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
分析:关键是判断出输入的数应该在那个位置插入
需要注意的点:注意下标