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