1. 생각
토끼 문제는 Fischer 시리즈의 비 유적 진술로, Fibonacci라는 수학자가 작품에서 제기 한 질문입니다.
2. 설명
신체 기술의 문제는 다음과 같습니다. 아기가 매달 아기를 낳으면 한 달 후에 아기가 아기를 낳기 시작합니다. 처음에는 아기가 한 명 밖에 없었고, 한 달에 두 명의 아기가 있었고, 2 개월 만에 3 명의 아기 소년, 3 개월 안에 5 명의 남자 소년이있었습니다 (작은 아기는 생산에 들어갔다) ...
우리는 그것을 수학적 방식으로 표현하는데, 다음과 같은 시퀀스 세트입니다.
1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89 ......
참고 : 신생아는 생산을 시작하는 데 한 달이 걸립니다! 그리고이 토끼는 불멸입니다! ! !
3. 규칙
우리 가이 문제에 명백히 노출 될 때, 규칙을 찾기가 어렵지만, 수학의 시퀀스 법칙에 따라이 문제에 대해 생각하고 비교를 기다리십니까? 아바타 차이? 아니면 다른 것? 이것은 수학자들이 제기 한 질문이므로 특정 수학 규칙이 있어야합니다. 규칙은 무엇입니까? 위의 시퀀스 세트를 신중하게 분석하면 이미 답이 있습니다. 맞습니다. 한 문장으로 표현됩니다. 세 번째 용어부터 시작하여 처음 두 항의 합은 세 번째 용어와 같습니다.
N 번째 항의 값이 FN이라고 가정하면, 시퀀스의 규칙 성은 수학 공식을 사용하여 다음과 같이 표현된다.
4. 의사 코드
소위 의사 코드는 실제 코드가 아닙니다. 기계에서 실행할 수 없습니다. 프로그램 논리를 표현하는 자연 언어와 프로그래밍 언어 사이의 의미있는 상징 일뿐입니다. 토끼 문제의 의사 코드의 경우, 우리는 여기에서 위의 공식의 재귀 방법을 사용하며 다음과 같은 의사 코드를 가질 수 있습니다.
절차 fib (n) [if (n <0) print ( "입력 오류"); if (n = 0 또는 n = 1) return (n); else return (fib (n-1) + fib (n-2)); ]]
이전 기사에 설명 된 재귀 개념에 따르면 자세한 내용은 이전 "Hanno 문제"를 참조 할 수 있습니다. 모든 사람과 비교할 때, 당신은 더 이상 재귀에 너무 익숙하지 않을 것입니다. 그런 다음 위에서 얻은 수학적 공식을 바탕으로 그러한 재귀 유사 코드를 추론하는 것은 매우 간결하고 명확합니다. 그러나 음, 당신은 그것을 추측했을 것입니다. 나는 그것을 말하고 싶습니다. N 값이 너무 커지면 프로그램이 느려질 것이라는 문제를 발견 했습니까?
당신이 알면, 그것은 당신 이이 문제에 대해 진지하게 생각했음을 의미하며, 당신은 또한 당신의 마음의 의심을 해결해야합니다. 의심의 여지가 없다면 해결 된 경우, 모든 사람의 의심을 해결하겠습니다. 왜 느린가? 그 이유는 N 번째 항을 계산할 때 N-1 및 N-2 항을 다시 계산해야하며 두 용어 모두 전에 계산 되었기 때문입니다. 다음 숫자를 찾으면 여전히 측면에서 계산해야합니다. 보이지 않게, 우리는 많은 쓸모없는 일을했습니다.
그렇다면이 문제를 해결할 좋은 방법이 있습니까? 대답이 있습니다. 위의 분석에 따르면, N 번째 항을 해결할 때 이전 N-1 및 N-2 항이 해결되었습니다. 그렇다면 왜 저장하지 않습니까? ? ? ?
하하, 갑자기 깨달았나요? 예! 우리는 여기에서 시간을 교환하기 위해 공간을 사용하여 효율성을 크게 향상시킬 수 있습니다! 나는 여기에 의사 코드를 쓰지 않을 것입니다.
5. 코드
좋아, 나는 그것을 모두 팔았는데 코드를 업로드했다.
public class fibonacci {public static void main (String [] args) {int [] fib = new int [20]; fib [0] = 0; fib [1] = 1; for (int i = 2; i <fib.length; i ++) {fib [i] = fib [i-1]+fib [i-2]; } for (int i = 0; i <fib.length; i ++) {system.out.print (fib [i]+""); } system.out.println (); }}6. 생각
여기서 우리는 사고 질문을 제안합니다. 토끼가 하나의 토끼와 여러 토끼를 낳지 않는다면 어떻게 해결해야합니까? 물론, 여러 가지를 낳는 것이 우리가 의미하는 것은 고정 숫자입니다. 하나의 토끼는 더 많이 낳지 않을 것이며, 하나의 토끼는 덜 낳지 않을 것입니다. 그렇지 않으면 그것을 해결하는 것은 불가능합니다.
여기에 코드가 없습니다. 온라인으로 적절한 리소스를 찾고이를 해결하는 방법을 확인할 수 있습니다.
요약
위는 토끼 문제를 해결하기위한 Java 언어의 코드 분석에 대한이 기사의 모든 내용입니다. 모든 사람에게 도움이되기를 바랍니다. 관심있는 친구는이 사이트의 다른 관련 주제를 계속 참조 할 수 있습니다. 단점이 있으면 메시지를 남겨주십시오.