4

  1. 一个楼梯有n (n >= 1)级,每次走1级或两级,请问从1级台阶走到第n级台阶一共有多少种走法(假设一开始站在第0级台阶上)
package Q1;

import java.util.Scanner;

//f(n) = f(n - 1) + f(n - 2)
public class UpStairs {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        System.out.println(method(n));
    }

    public static int method(int n){
        if (n == 1 || n == 0)
            return 1;
        else
            return method(n - 1) + method(n - 2);
    }
}

  1. 计算n条直线最多能把平面分成多少部分? n >= 1
package Q2;

import java.util.Scanner;

public class Line {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        System.out.println(GetParts(n));
    }
//    0:1
//    1:2 = 1 + 1
//    2:4 = 1 + 1 + 2
//    3:7 = 1 + 1 + 2 + 3
//    4:11 = 1+ 1 +2 + 3 + 4
//    f(n) = f(n - 1) + n
    public static int GetParts(int n){
        if (n == 0)
            return 1;
        else
            return GetParts(n - 1) + n;
    }
}

  1. 猴子第一天摘了若干个桃子,当即吃了一半,还不解馋,又多吃了一个; 、
    第二天,吃剩下的桃子的一半,还不过瘾,又多吃了一个;
    以后每天都吃前一天剩下的一半多一个,到第10天想再吃时,只剩下一个桃子了。
    问第i(i的取值范围为[1, 10])天的桃子个数?
package Q3;

import java.util.Scanner;

public class Peach {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int day = sc.nextInt();
        System.out.println(GetPeach(day));
    }

//    10: 1
//    9: (1+1)*2=4
//    8: (4+1)*2=10
//    7: (10+1)*2=22
//    ...
//    f(n) = (f(n + 1) + 1) * 2
    public static int GetPeach(int n){
        if (n == 10)
            return 1;
        else
            return (GetPeach(n + 1) + 1) * 2;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值