Recursive Functions Logo ভাষায় একটি অত্যন্ত শক্তিশালী কৌশল যা ফাংশন বা Procedure নিজেই তার মধ্যে অন্য একটি ফাংশন বা Procedure কল করে। এটি জটিল প্যাটার্ন এবং ফ্র্যাক্টাল তৈরির জন্য খুবই কার্যকর। নিচে Recursive Functions ব্যবহার করে প্যাটার্ন তৈরির কিছু উদাহরণ দেওয়া হলো:
Recursive Functions ব্যবহার করে প্যাটার্ন তৈরি:
এটি একটি বর্গাকার প্যাটার্ন তৈরি করবে, যা একাধিক স্তরে বিভক্ত।
কোড:
TO squarePattern :size
REPEAT 4 [
FORWARD :size
RIGHT 90
]
IF :size > 10 [
squarePattern :size / 1.5
]
END
squarePattern 100এখানে:
- squarePattern একটি রেকারসিভ ফাংশন। প্রথমে এটি একটি বর্গ আঁকবে, তারপর IF শর্তের মাধ্যমে
:size১০ এর বেশি হলে ছোট আকারের বর্গ আঁকবে। - REPEAT 4: বর্গ আঁকার জন্য ৪টি সাইডের জন্য লুপ।
- IF :size > 10: বর্গের সাইডের দৈর্ঘ্য ১০ এর বেশি হলে পুনরাবৃত্তি হবে, যা আকার ছোট করে দেয়।
এটি একটি ছোট আকারের বর্গ আঁকবে এবং পুনরাবৃত্তি হতে থাকবে যতক্ষণ না সাইডের দৈর্ঘ্য ১০ এর নিচে চলে আসে।
Recursive Function ব্যবহার করে Sierpinski Triangle (সির্পিনস্কি ত্রিভুজ) তৈরি:
Sierpinski Triangle একটি জনপ্রিয় ফ্র্যাক্টাল আকার, যা রেকারসিভ ফাংশন ব্যবহার করে তৈরি করা যায়। প্রতিটি ত্রিভুজের মধ্যে তিনটি ছোট ত্রিভুজ পুনরাবৃত্তি হবে, যা একটি বৃহত্তর ত্রিভুজ তৈরি করবে।
কোড:
TO sierpinski :size
REPEAT 3 [
FORWARD :size
RIGHT 120
]
IF :size > 10 [
sierpinski :size / 2
]
END
sierpinski 100এখানে:
- sierpinski ফাংশনটি ত্রিভুজের সাইডের দৈর্ঘ্য হিসেবে
:sizeব্যবহার করে। - REPEAT 3: ত্রিভুজ আঁকার জন্য ৩টি সাইডের জন্য লুপ।
- IF :size > 10: যখন সাইডের দৈর্ঘ্য ১০ এর বেশি হবে, তখন পুনরাবৃত্তি হবে, এবং ছোট ত্রিভুজ তৈরি করবে।
এটি একটি সির্পিনস্কি ত্রিভুজ তৈরি করবে, যেখানে ছোট ত্রিভুজগুলি বড় ত্রিভুজের মধ্যে পুনরাবৃত্তি হবে।
Recursive Function ব্যবহার করে Circle (বৃত্ত) তৈরি:
আমরা একটি ছোট রেকারসিভ ফাংশন ব্যবহার করে একটি বৃত্তের চারপাশে লাইন আঁকতে পারি, যা প্রতিটি স্তরে বৃত্তের আকারের প্রতি কিছু পরিবর্তন করবে।
কোড:
TO circlePattern :size
REPEAT 360 [
FORWARD :size
RIGHT 1
]
IF :size > 1 [
circlePattern :size - 1
]
END
circlePattern 50এখানে:
- circlePattern ফাংশনটি প্রতিটি বৃত্তের আকারকে নিয়ন্ত্রণ করে। প্রথমে এটি একটি বড় বৃত্ত আঁকবে, তারপর IF :size > 1 শর্তের মাধ্যমে আকার ছোট করবে।
- REPEAT 360: বৃত্ত আঁকতে ৩৬০টি স্টেপ নেওয়া হবে।
- FORWARD :size: বৃত্তের সাইডের দৈর্ঘ্য হিসেবে
:sizeব্যবহার করা হচ্ছে, যা আকারের উপর ভিত্তি করে পরিবর্তিত হবে।
এটি একাধিক ছোট বৃত্ত আঁকবে, যেখানে প্রতিটি বৃত্তের আকার কিছুটা ছোট হবে।
ফ্র্যাক্টাল তৈরি করার আরও একটি উদাহরণ:
এখানে আমরা একটি Koch Curve তৈরি করবো, যা একটি ফ্র্যাক্টাল আকার। এই আকারের মধ্যে ছোট ছোট ত্রিভুজের পুনরাবৃত্তি হয় এবং এটি একটি জটিল রেকারসিভ প্যাটার্ন তৈরি করে।
কোড:
TO koch :size
IF :size < 5 [
FORWARD :size
RIGHT 60
FORWARD :size
LEFT 120
FORWARD :size
RIGHT 60
]
IF :size >= 5 [
koch :size / 3
LEFT 60
koch :size / 3
RIGHT 120
koch :size / 3
LEFT 60
koch :size / 3
]
END
koch 100এখানে:
- koch ফাংশনটি একটি Koch Curve তৈরি করার জন্য রেকারসিভ প্রক্রিয়া ব্যবহার করছে।
- IF :size < 5: যখন সাইডের দৈর্ঘ্য ৫ এর কম হবে, তখন লাইন আঁকা হবে।
- IF :size >= 5: যখন সাইডের দৈর্ঘ্য ৫ এর বেশি হবে, তখন ফাংশন নিজেই পুনরাবৃত্তি করবে এবং ছোট আকারের কোচ কনফিগারেশন তৈরি হবে।
এটি একটি Koch Curve তৈরি করবে, যা ছোট ত্রিভুজের মাধ্যমে একটি জটিল প্যাটার্ন তৈরি করবে।
সারসংক্ষেপ:
Recursive Functions ব্যবহার করে Logo ভাষায় জটিল প্যাটার্ন যেমন Sierpinski Triangle, Koch Curve, এবং Circle Patterns তৈরি করা যায়। রেকারসিভ ফাংশনগুলো পুনরাবৃত্তি করে ছোট আকারের পুনরাবৃত্তি বা কপি তৈরি করে একটি বৃহত্তর প্যাটার্ন তৈরি করে। এই ফাংশনগুলো কোডের পুনঃব্যবহারযোগ্যতা এবং জটিলতা সহজে সমাধান করতে সাহায্য করে।
Read more