>  기사  >  Java  >  원숭이가 복숭아를 먹는 문제 알고리즘을 Java로 구현한 예

원숭이가 복숭아를 먹는 문제 알고리즘을 Java로 구현한 예

黄舟
黄舟원래의
2017-10-18 10:24:191963검색

이 글은 주로 Java로 구현된 원숭이 먹는 복숭아 문제 알고리즘을 소개합니다. 원숭이가 복숭아를 먹는 문제에 대해 간략하게 설명하고 Java에서 원숭이가 복숭아를 먹는 문제를 해결하기 위한 구체적인 구현 기술을 예제 형식으로 제공합니다. 기사

이 예에서는 Java로 구현된 원숭이가 복숭아를 먹는 문제 알고리즘을 설명합니다. 참고용으로 내용을 공유합니다.

원숭이가 복숭아를 먹는 문제

개요: 원숭이가 첫날 복숭아 N개를 따서 부족해서 절반을 먹었습니다. 둘째 날 Tian은 남은 복숭아를 절반, 또 하나를 더 먹었습니다. 그 이후로 그는 n일째에 다시 먹고 싶었을 때 복숭아가 한 개밖에 남지 않았습니다. . 부탁드립니다. 첫날에 복숭아를 몇 개 따셨나요?

사고 및 계산 단계(전체 복숭아가 몇 개 따졌는지 알아보는 함수식):

일수를 변수로 사용

f(1) = 1(남은 복숭아 개수)
f(2) = f( 3) - (약간 먹음) = f(3) -(f(3)/2+1) = f(3)/2-1
....
f(n) = f(n+1 )/2-1 (재귀 공식)

그래서 우리는 재귀 공식을 얻을 수 있습니다:

f(n-1) = f(n)/2-1 => ) = f(n) - 2 => f(n)=2f(n-1) +2 (이것이 우리가 원하는 공식입니다)

그러면 원숭이가 딴 복숭아의 총 개수를 알아낼 수 있습니다. 지금부터 일!

예를 들어 f(10)은 지금부터 10일(10일 전에 원숭이가 먹었던 복숭아의 수)을 의미합니다!

특정 코드는 다음과 같습니다.


package javastudy;
import java.util.Scanner;
public abstract class Testit2 {
  // 猴子吃桃问题
  public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    int n;
    n = in.nextInt();
    System.out.println(f(n));
    in.close();
  }
  static int f(int n) {
    if (n == 1)   //离现在只有一天的时候那就只剩下一个!
    return 1;
    return 2 * f(n - 1) + 2;
  }
}

위 내용은 원숭이가 복숭아를 먹는 문제 알고리즘을 Java로 구현한 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.