เขียนโปรแกรมจำนวนฟีโบนัชชี(fibonacci)

| ไอที | Java | 8629

เขียนโปรแกรมจำนวนฟีโบนัชชี(fibonacci)

บทความนี้เรามาเขียนโปรแกรม fibonacci กันครับ

ก่อนอื่น รู้จักจำนวนฟีโบนัชชีกันยังครับ ถ้ายังไม่รู้จัก ก็เข้าไปดูตามนี้ครับ จำนวนฟีโบนัชชี(fibonacci)

ตอนนี้เราก็รู้จักกันจำนวนฟีโบนัชชีกันไปแล้วนะครับ ต่อไปเรามาเขียนโปรแกรมหาเลขนี้กันครับ

โปรแกรมหาจำนวนฟีโบนัชชีตัวถัดไป

ในโปรแกรมแรกนี้เรามาเขียนโปรแกรมหาจำนวนฟีโบนัชชีตัวถัดไปกันครับ ซึ่งจะมีข้อความให้กรอก 2 ตัวนั่นคือ ตัวแรก กับตัวที่สอง ดังนั้นหน้าที่เราคือหาตัวที่ถามที่อยู่ถัดไปครับ

ตัวอย่างโค้ด
import java.util.Scanner;

public class Fibonacci {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.print("Input First Fibonacci : ");
        long first = in.nextLong();
        System.out.print("Input Second Fibonacci : ");
        long second = in.nextLong();
        System.out.println("Third Fibonacci is " + (first + second));
    }
}
ตัวอย่างนี้ รับค่า เข้ามาสองค่า คือ first กับ second แล้วคืนค่าที่สาม นั่นคือ เอาค่าแรกมาบวกกับค่าที่สอง

โปรแกรมหาเลขฟีโบนัชชีถึงตัวที่กำหนดโดยใช้ while

โปรแกรมนี้ เป็นการแสดงตัวเลขจำนวนฟีโบนัชชีตั้งแต่ 0 ถึงจำนวนตัวที่กรอกเข้ามาโดยใช้ while loop
import java.util.Scanner;

public class Fibonacci {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.print("Input Number For Max Fibonacci : ");
        long max = in.nextLong();

        int first = 0;
        int second = 1;
        int fibonac;
        System.out.print("0 1");
        while(true){
            fibonac = first + second;
            first = second;
            second = fibonac;
            if(fibonac > max) {
                System.out.println();
                break;
            }
            System.out.print(" " + fibonac);
        }
    }
}
โปรแกรมนี้เรารับค่ามาจากแป้นพิมพ์ แล้วเก็บในตัวแปร max จากนั้น กำหนดให้ตัวแปร first = 0 และ second = 1 เป็นค่าเริ่มต้น แล้วสร้างตัวแปร fibonac เพื่อเก็บค่าที่สามนั่น จากนั้นให้วงวน while ให้วนรอบ ใน while เราตรวจสอบว่า ถ้าค่าที่สาม มากกว่าค่า max ให้ break ออกมาจาก loop ซึ่งภายใน loop ก็จะนำค่า first กับ second มาบวกกันเรื่อย ๆ

โปรแกรมหาเลขฟีโบนัชชีถึงตัวที่กำหนดโดยใช้ recursive

โปรแกรมนี้ทำหน้าที่เหมือนโปรแกรมก่อนหน้า แต่แค่เขียนคนละวิธีเท่านั้น
import java.util.Scanner;

public class Fibonacci {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.print("Input Number For Max Fibonacci : ");
        long max = in.nextLong();
        Fibonacci(max);
    }
    public static void Fibonacci(long max){
        System.out.print("0 1");
        nextFibonacci(0, 1, max);
    }
    public static int nextFibonacci(long first, long second, long max){
        long fibonac = (first + second);
        if(fibonac > max) {
            System.out.println();
            return 0;
        }
        System.out.print(" " + fibonac);
        return nextFibonacci(second, fibonac, max);
    }
}
โปรแกรมนี้ รับค่าสูงสุดแล้วเก็บไว้ในตัวแปร max จากนั้นเรียกฟังก์ชัน Fibonacci แล้วส่งค่า max เข้าไป ในฟังก์ชันนี้ จะปริ้นตัวเลข 0 กับ 1 ออกมาทางหน้าจอ แล้วทำการเรียกฟังก์ชัน nextFibonacciส่งค่าตัวแรกกับตัวถัดไป นั่นคือ 0 กับ 1 แล้วส่งค่า max เข้าไปด้วย ในฟังก์ชันนี้ จะทำการคำนวณค่า max ถัดไป โดยให้ตัวแรกบวกกับตัวที่สอง จากนั้นเช็คว่า ค่าที่ได้ มีค่ามากกว่า max หรือเปล่าถ้ามีค่ามากกว่า ก็ให้ return กลับ ถ้ายังน้อยกว่า ให้ทำการปริ้นช่องว่าง พร้อมกับค่าที่ได้ แล้วก็ทำการเรียกฟังก์ชันตัวเองอีกครั้ง โดยส่งค่าที่สอง กับค่าที่ได้ ไปให้ฟังก์ชัน
ตัวอย่างการแสดงผล
Input Number For Max Fibonacci : 12345
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946
comments