第二十题
打印出如下图案
(行数为奇数 n 的菱形)
就是下面这个样子哒~
- *
- ***
- *****
- *******
- *****
- ***
- *
- public class Lianxi20 {
- public static void main(String[] args) {
- int h=7,w=7;
- for(int i=0;i<(h+1)/2;i++){
- for(int j=0;j<w/2-i;j++){
- System.out.print(" ");
- }
- for(int k=1;k<(i+1)*2;k++){
- System.out.print("*");
- }
- System.out.println();
- }
- for(int i=1;i<=h/2;i++){
- for(int j=1;j<=i;j++){
- System.out.print(" ");
- }
- for(int k=1;k<=w-i*2;k++){
- System.out.print("*");
- }
- System.out.println();
- }
- }
- }
第二十一题
有一分数序列: 2/1,3/2,5/3,8/5,13/8,21/13... 求出这个数列的前 20 项之和.
代码:
- public class lianxi20 {
- public static void main(String[] args) {
- double sum=0.0;
- int x=2,y=1,t;
- for(int i=1;i<=20;i++){
- sum = sum+(double)x/y;
- t=y;
- y=x;
- x=y+t;
- }
- System.out.println(sum);
- }
- }
下面是第二种方式, 用递归的方法: 因为分子, 分母的规律就是斐波那契数列呀~
代码:
- public class lianxi23 {
- public static void main(String[] args) {
- double sum=0.0;
- for(int i=2;i<=21;i++){
- sum = sum+(double)f(i+1)/f(i);
- System.out.println(f(i+1)+"/"+f(i));
- }
- System.out.println(sum);
- }
- public static int f(int a){
- if(a==1||a==2){
- return 1;
- }else{
- return f(a-1)+f(a-2);
- }
- }
- }
第二十二题
利用递归方法求 n!(如 n=5, 则求出 5!).
代码:
- public class lianxi22 {
- public static void main(String[] args) {
- Scanner in = new Scanner(System.in);
- int n = in.nextInt();
- System.out.println(Recursion(n));
- }
- public static int Recursion(int n){
- if(n==1||n==0){
- return 1;
- }else{
- return n*Recursion(n-1);
- }
- }
- }
第二十三题
有 5 个人坐在一起, 问第五个人多少岁? 他说比第 4 个人大 2 岁. 问第 4 个人岁数, 他说比第 3 个人大 2 岁. 问第三个人, 又说比第 2 人大两岁. 问第 2 个人,
说比第一个人大两岁. 最后问第一个人, 他说是 10 岁. 请问第五个人多大?
代码:
- public class lianxi23 {
- public static void main(String[] args) {
- int n = 5;
- System.out.println(f(5));
- }
- public static int f(int n ){
- if(n==1) {
- return 10;
- }else{
- return 2+f(n-1);
- }
- }
- }
一看这架势, 我妥妥的想到了用递归, 写下了如上的代码写完了还很得意然后~ 我就发现其实这个题是可以用更简单的 for 循环来做的~
果然我是用递归用出惯性了, 不知道伙伴们是不是也有这种时候, 好不容易写完了代码, 抬头一看, 隔壁的小哥哥, 不仅把题做出来了, 而且逻辑还是超简单的~
代码:
- public class lianxi25 {
- public static void main(String[] args) {
- int sum = 10;
- for(int i=1;i<5;i++){
- sum=sum+2;
- }
- System.out.println(sum);
- }
- }
我走过最多的路, 某过于出题老师的套路. 写代码不仅要防 bug, 还要提防出题老师的险恶用心我的心好累呀
来源: http://www.jianshu.com/p/4bdc40cb7fb1