12faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes/* 22faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * Copyright (C) 2011 The Android Open Source Project 32faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * 42faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * Licensed under the Apache License, Version 2.0 (the "License"); 52faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * you may not use this file except in compliance with the License. 62faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * You may obtain a copy of the License at 72faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * 82faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 92faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * 102faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * Unless required by applicable law or agreed to in writing, software 112faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 122faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * See the License for the specific language governing permissions and 142faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * limitations under the License. 152faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes */ 169f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom 179ac995bc84d396ed5a748b591a01ae0c43f4dbb3Ian Rogersclass Main { 189f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom 196969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee/* 206969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee // Iterative version 219f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom static int fibonacci(int n) { 229f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom if (n == 0) { 239f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom return 0; 249f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom } 259f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom int x = 1; 269f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom int y = 1; 279f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom for (int i = 3; i <= n; i++) { 289f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom int z = x + y; 299f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom x = y; 309f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom y = z; 319f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom } 329f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom return y; 339f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom } 346969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee*/ 356969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee 366969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee // Recursive version 376969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee static int fibonacci(int n) { 386969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee if ((n == 0) || (n == 1)) { 396969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee return n; 406969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee } else { 416969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee return fibonacci(n - 1) + (fibonacci(n - 2)); 426969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee } 436969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee } 449f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom 459f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom public static void main(String[] args) { 46a74ba83a53cc2f077f1b3090e9a78f207108ed3bBrian Carlstrom String arg = (args.length > 0) ? args[0] : "10"; 479f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom try { 48a74ba83a53cc2f077f1b3090e9a78f207108ed3bBrian Carlstrom int x = Integer.parseInt(arg); 496969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee int y = fibonacci(x); 50a74ba83a53cc2f077f1b3090e9a78f207108ed3bBrian Carlstrom System.out.printf("fibonacci(%d)=%d\n", x, y); 51a74ba83a53cc2f077f1b3090e9a78f207108ed3bBrian Carlstrom y = fibonacci(x + 1); 52a74ba83a53cc2f077f1b3090e9a78f207108ed3bBrian Carlstrom System.out.printf("fibonacci(%d)=%d\n", x + 1, y); 53a74ba83a53cc2f077f1b3090e9a78f207108ed3bBrian Carlstrom } catch (NumberFormatException ex) { 54a74ba83a53cc2f077f1b3090e9a78f207108ed3bBrian Carlstrom System.err.println(ex); 55a74ba83a53cc2f077f1b3090e9a78f207108ed3bBrian Carlstrom System.exit(1); 56a74ba83a53cc2f077f1b3090e9a78f207108ed3bBrian Carlstrom } 579f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom } 589f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom} 59