ফিবোনাচি সিকোয়েন্স গণিতের সবচেয়ে বিখ্যাত সিকোয়েন্সগুলোর একটি। এটি ক্যালকুলেট করা খুব সহজ: সিকোয়েন্সের প্রতিটি সংখ্যা পূর্ববর্তী দুটি সংখ্যার যোগফল।
এই সিকোয়েন্স প্রোগ্রামিং-এЙ চলে এসেছে। প্রায়শই, এটি ডেভেলপারদের অ্যালগরিদম এবং লুপ নিয়ে ট্রেন করার জন্য ব্যবহৃত হয়।
এই গাইডে, আমরা পাইথনে ফিবোনাচি সিকোয়েন্স কীভাবে কোড করবেন সেটি আলোচনা করব। আমরা ফিবোনাচি সিকোয়েন্স ইমপ্লিমেন্ট করার দুটি পদ্ধতি দেখব: ইটারেটিভ এবং রিকার্সিভ।
ফিবোনাচি সিকোয়েন্স কী?
ফিবোনাচি সিকোয়েন্স হল সংখ্যার একটি সিরিজ। প্রতিটি সংখ্যা সিকোয়েন্সে পূর্ববর্তী দুটি সংখ্যার গুণফল। সিকোয়েন্সটি এইভাবে শুরু হয়:
0, 1, 1, 2, 3, 4, 8, 13, 21, 34
যতক্ষণ না আপনি নতুন সংখ্যা ক্যালকুলেট করা বন্ধ করেন, ততক্ষণ এটি চলতে থাকে। সিকোয়েন্সের পরবর্তী সংখ্যা ক্যালকুলেট করার নিয়মটি হল:
x(n) = x(n-1) + x(n-2)
x(n) হল সিকোয়েন্সের পরবর্তী সংখ্যা। x(n-1) হল পূর্ববর্তী টার্ম। x(n-2) হল লাস্টটির আগের টার্ম।
পাইথন ফিবোনাচি সিকোয়েন্স: ইটারেটিভ পদ্ধতি
চলুন ফিবোনাচি সিরিজ ইমপ্লিমেন্ট করার ইটারেটিভ পদ্ধতি নিয়ে কথা বলি।
এই পদ্ধতিটি একটি "while" লুপ ব্যবহার করে যা একটি নির্দিষ্ট কন্ডিশন মেট হওয়া পর্যন্ত লিস্টে পরবর্তী সংখ্যা ক্যালকুলেট করে। হরবার while লুপ রান করলে, আমাদের কোড ইটারেট করে। এই জন্য পদ্ধতিটি ইটারেটিভ বলা হয়।
চলুন কিছু ইনিশিয়াল ভ্যালু সেট করে শুরু করি:
terms_to_calculate = 9 n1, n2 = 0, 1 counted = 0
আমরা চারটি ভেরিয়েবল ডিক্লেয়ার করেছি।
প্রথম ভেরিয়েবল ট্র্যাক করে আমরা কতগুলো মান ক্যালকুলেট করতে চাই। পরের দুটি ভেরিয়েবল, n1 এবং n2, লিস্টের প্রথম দুটি আইটেম। আমাদের এই মানগুলো স্টেট করতে হবে অন্যথায় আমাদের প্রোগ্রাম জানবে না কোথায় থেকে শুরু করতে হবে। এই মানগুলো পরিবর্তন হবে ক্যালকুলেশন শুরু করলে।
লাস্ট ভেরিয়েবল ট্র্যাক করে আমরা আমাদের পাইথন প্রোগ্রামে কতগুলো টার্ম ক্যালকুলেট করেছি।
চলুন একটি লুপ লিখি যা একটি ফিবোনাচি নম্বর ক্যালকুলেট করে:
while counted < terms_to_calculate:
print(n1)
new_number = n1 + n2
n1 = n2
n2 = new_number
counted += 1
এই while লুপ ততক্ষণ রান করে যতক্ষণ না আমরা ক্যালকুলেট করা ভ্যালুর সংখ্যা আমরা ক্যালকুলেট করতে চাই 총 সংখ্যার সমান হয়। লুপ n1 এর মান শেলে প্রিন্ট করে। তারপর এটি পূর্ববর্তী সংখ্যাকে এর আগের সংখ্যার সাথে যোগ করে পরবর্তী সংখ্যা ক্যালকুলেট করে।
আমরা n1 এর মান n2 এর সমান করে দিই। এতে n1 নিউ নম্বারের পর প্রথম সংখ্যা হয়ে যায়। তারপর আমরা n2 কে নিউ নম্বারের সমান সেট করি। পরে, আমরা += অপারেটর ব্যবহার করে আমাদের counted ভেরিয়েবলে ১ যোগ করি।
আমাদের কোড রিটার্ন করে:
1
1
2
3
5
8
13
21
আমাদের প্রোগ্রাম সফলভাবে ফিবোনাচি সিকোয়েন্সের প্রথম নয়টি মান ক্যালকুলেট করেছে!
পাইথন ফিবোনাচি সিকোয়েন্স: রিকার্সিভ পদ্ধতি
ফিবোনাচি সিকোয়েন্স ক্যালকুলেট করা রিকার্সনের জন্য একটি পারফেক্ট ইউজ কেস। একটি রিকার্সিভ ফাংশন হল এমন একটি ফাংশন যা নিজের ওপর নির্ভর করে একটি সমস্যা সমাধান করতে।
রিকার্সিভ ফাংশন একটি সমস্যাকে ছোট ছোট সমस्यায় ভাঙে দেয় এবং নিজে সেগুলো সমাধান করতে ব্যবহৃত হয়। চলুন একটি ভেরিয়েবল ইনিশিয়ালাইজ করে শুরু করি যা ট্র্যাক করে আমরা কতগুলো সংখ্যা ক্যালকুলেট করতে চাই:
terms_to_calculate = 9
এই প্রোগ্রামের শুধু একটি ভেরিয়েবল ইনিশিয়ালাইজ করতে হবে। পরবর্তীতে, আমরা একটি ফাংশন তৈরি করতে পারি যা সিকোয়েন্সের পরবর্তী সংখ্যা ক্যালকুলেট করে:
def calculate_number(number):
if number <= 1:
return number
else:
return(calculate_number(number-1) + calculate_number(number-2))
এই ফাংশনটি চেক করে এর মধ্যে পাস করা সংখ্যা ১-এর সমান বা কম কিনা। যদি হয়, সেই সংখ্যাটি কোনো ক্যালকুলেশন ছাড়া রিটার্ন করা হয়। অন্যথায়, আমরা calculate_number() ফাংশন দুবার কল করে লিস্টে পূর্ববর্তী দুটি আইটেমের যোগফল ক্যালকুলেট করি।
শেষে, আমাদের একটি মেইন প্রোগ্রাম লিখতে হবে যা আমাদের ফাংশন এক্সিকিউট করে:
for number in range(terms_to_calculate):
print(calculate_number(number))
এই লুপ terms_to_calculate এর মান সমান বার এক্সিকিউট হবে। অর্থাৎ, আমাদের লুপ ৯ বার এক্সিকিউট হবে। এই লুপ calculate_number() মেথড কল করে সিকোয়েন্সের পরবর্তী সংখ্যা ক্যালকুলেট করতে। এটি এই সংখ্যাকে কনসোলে প্রিন্ট করে।
আমাদের কোড রিটার্ন করে:
1
1
2
3
5
8
13
21
এই কোড থেকে আউটপুট আমাদের আগের উদাহরণের মতোই।
আপনাযদি পদ্ধতিতে পার্থক্য রয়েছে। আমরা একটি রিকার্সিভ ফাংশন ডিফাইন করেছি যা নিজেকে কল করে সিকোয়েন্সের পরবর্তী সংখ্যা ক্যালকুলেট করতে। রিকার্সিভ পদ্ধতি সাধারণত ইটারেটিভ পদ্ধতির চেয়ে পছন্দ করা হয় কারণ এটি বোঝা সহজ।
এই কোড আমাদের ইটারেটিভ উদাহরণের চেয়ে যথেষ্ট কম লাইন ব্যবহার করে। এর மேலும், এই প্রোগ্রাম কাজ করতে শুধু একটি ভেরিয়েবল ইনিশিয়ালাইজ করলেই হবে; আমাদের ইটারেটিভ উদাহরণে চারটি ভেরিয়েবল ইনিশিয়ালাইজ করতে হয়েছিল।
উপসংহার
ফিবোনাচি সিকোয়েন্স ইটারেটিভ বা রিকার্সিভ পদ্ধতি দুটির যেকোনো একটি ব্যবহার করে জেনারেট করা যেতে পারে।
ইটারেটিভ পদ্ধতিটি পরবর্তী সংখ্যাগুলো ক্যালকুলেট করতে একটি while লুপের ওপর নির্ভর করে। রিকার্সিভ পদ্ধতিতে একটি ফাংশন ডিফাইন করা হয় যা নিজেকে কল করে সিকোয়েন্সের পরবর্তী সংখ্যা ক্যালকুলেট করে।
এখন আপনি পাইথনে ফিবোনাচি সিকোয়েন্স ক্যালকুলেট করার জন্য এক্সপার্টের মতো রেডি!