作业记录--蟠桃记

题目

问题描述】蟠桃记的故事是这样的:

有若干蟠桃,第一天悟空吃掉桃子总数一半多一个,第二天又将剩下的桃子吃掉一半多一个,以后每天吃掉前一天剩下的一半多一个,到第n天准备吃的时候只剩下一个桃子。聪明的你,请帮悟空算一下,他第一天开始吃的时候一共有多少个桃子呢?

【输入形式】每组输入数据占一行,包含一个正整数n(1<n<30),表示只剩下一个桃子的时候是在第n天发生的。
【输出形式】对于每组输入数据,输出第一天开始吃的时候桃子的总数,每个测试实例占一行。
【样例输入】

2

【样例输出】

4

codding

从输入形式来看,我们要获取天数来表示第n天的时候剩应该蟠桃。

  1. 获取输入信息
  2. 判断范围1-30
 Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        if(n<1||n>30){
            return;
        }

解析题目得,到了第n天只剩一个桃子,猴子是每天吃掉一半多一个,结果是要求最开始的桃子数。

  • 有输出条件 最后一天 return 1
  • 每天重复吃掉一半多一个,重复调用函数
  • 最优是递归解决
  1. 定义一个方法自身掉用自己
  2. 定义出口判断 n=1,return 1
public int eatPeach(int n){
        if(n==1) return 1;
        return (eatPeach(n-1)+1)*2;
    }

最后直接调用方法

完整code

package work007;

import java.util.Scanner;

public class peach {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        if(n<1||n>30){
            return;
        }
        System.out.println(eatPeach(n));

    }
    public static int eatPeach(int n){
        if(n==1) return 1;
        return (eatPeach(n-1)+1)*2;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值