দুটি স্ট্রিং str_1 এবং str_2 দেওয়া হয়েছে৷ লক্ষ্য হল একটি পুনরাবৃত্ত প্রক্রিয়া ব্যবহার করে স্ট্রিং str1 এ সাবস্ট্রিং str2 এর সংঘটনের সংখ্যা গণনা করা।
একটি পুনরাবৃত্ত ফাংশন হল একটি যার সংজ্ঞার ভিতরে নিজস্ব কল রয়েছে।
যদি str1 হয় "I know that you know that i know" str2="know"
ঘটনার সংখ্যা হল −3
আসুন উদাহরণ দিয়ে বোঝা যাক।
উদাহরণস্বরূপ
ইনপুট
str1 = "TPisTPareTPamTP", str2 = "TP";
আউটপুট
Count of occurrences of a substring recursively are: 4
ব্যাখ্যা
The substring TP occurs 4 times in str1.
ইনপুট
str1 = "HiHOwAReyouHiHi" str2 = "Hi"
আউটপুট
Count of occurrences of a substring recursively are: 3
ব্যাখ্যা
The substring Hi occurs 3 times in str1.
নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি −
এই পদ্ধতিতে আমরা জাভাতে contains() পদ্ধতি ব্যবহার করে str1-এ str2-এর ঘটনা অনুসন্ধান করব। str1 এ str2 বিদ্যমান থাকলে এটি সত্য হবে। সত্য হলে, জাভাতে রিপ্লেস ফার্স্ট() পদ্ধতি ব্যবহার করে str1 থেকে প্রথম ঘটনাটিকে "" দিয়ে প্রতিস্থাপন করুন এবং গণনা বাড়াতে মান ফেরাতে 1 যোগ করুন।
-
str1 এবং str2 হিসাবে দুটি স্ট্রিং নিন।
-
রিকার্সিভ মেথড subsrting_rec(স্ট্রিং স্ট্র, স্ট্রিং সাব) স্ট্রিং স্ট্র এবং এর সাবস্ট্রিং সাব নেয় এবং স্ট্র-এ সাব-এর সংঘটনের গণনা প্রদান করে।
-
str.contains(sub) সত্য কিনা পরীক্ষা করুন। ( str এর সাব আছে )
-
যদি সত্য হয় তাহলে str.replaceFirst(sub,"") ব্যবহার করে "" দিয়ে sub-এর প্রথম উপস্থিতি প্রতিস্থাপন করুন।
-
subsrting_rec(স্ট্রিং স্ট্র, স্ট্রিং সাব) এ একটি পুনরাবৃত্ত কলের মধ্যে এটি করুন।
-
সমস্ত পুনরাবৃত্তির শেষে সমস্ত রিটার্ন মানের যোগফল গণনা করা হয়।
-
ফলাফল প্রিন্ট করুন।
উদাহরণ
public class recursive{ public static void main(String args[]){ String str1 = "TPisTPareTPamTP", str2 = "TP"; System.out.println("Count of occurrences of a substring recursively are: "+subsrting_rec(str1, str2)); } static int subsrting_rec(String str, String sub){ if (str.contains(sub)){ return 1 + subsrting_rec(str.replaceFirst(sub, ""), sub); } return 0; } }
আউটপুট
যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −
উৎপন্ন করবেCount of occurrences of a substring recursively are: 4