เขียนโปรแกรมจำนวนฟีโบนัชชี(fibonacci)
เขียนโปรแกรมจำนวนฟีโบนัชชี(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 loopimport 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