রিকার্সন ২য় পর্ব

http://www.techsharif.com/category/%E0%A6%B0%E0%A6%BF%E0%A6%95%E0%A6%BE%E0%A6%B0%E0%A7%8D%E0%A6%B8%E0%A6%A8/

[প্রথমে একটি বিষয় পরিষ্কার করে ফেলি , ১২৩ একটি সংখ্যা হলে এর ১ম অঙ্ক হলো ১ আর একক স্থানীয় অঙ্ক হলো ৩ ।]

গতপর্বে আমি আপনাদেরকে দুটো কাজ করতে বলেছিলাম প্রথমটি হলো (৫৫৫+৫৫৫) এর জন্য আউটপুট ০১১ আসছিলো, আসলে আসার কথা ০১১১ । এটা ঠিক করার কথা বলা হয়েছিলো । আর ২য় কাজটি হলো লুপ দিয়ে আউটপুট সঠিক নিয়ে আসা । সেক্ষেত্রে (৫৫৫+৫৫৫) এর আউটপুট আসবে ১১১০ । আসাকরি কাজদুটো করে এই পর্ব পরা শুরু করেছেন ।

প্রথমে ১ম প্রবলেমটা নিয়ে একটু আলোচনা করি । ১ম প্রবলেমটা সমাধান করার জন্য খুব বেশি পরিবর্তন করতে হবে না । 4 নং লাইন এ (a!=0 && b!=0) এর পরিবরতে (a+b+c !=0) করে দিলেই সথিক আউটপুট পাওয়া যাবে । একটু চিন্তা করলেই আপনারা এর কারন বুঝতে পারবেন ।

এবার ২য় সমস্যার পুরাপুরি সমাধান । তার আগে আমরা প্রবলেমটা নিয়ে একটু চিন্তা করি । আমরা যখন খাতায় লিখি তখন বাম বা ডান যে কোনো এক দিক দিয়েই লিখতে পারি । কিন্তু প্রোগ্রাম করে আমরা শুধুমাত্র বামপাশ থেকে লিখতে পারি । তাই আমাদের আউটপুট এমন আসছে । কারন আমরা প্রথমে যে অঙ্কটা হিসাব করে বের করি প্রকৃতপক্ষে তা হলো আমাদের যোগফলের শেষ অঙ্ক । এর ফলে আমরা যোগফলের শেষ অঙ্ক প্রথমে প্রিন্ট করছি । কিন্তু আমাদেরকে সবার শেষে হিসাব করা অঙ্ক সবার আগে প্রিন্ট করতে হবে । এক্ষেত্রে প্রথমে আমাদেরকে সম্পূর্ণ কাজ করে সবগুলো মান স্টোর করে রাখতে হবে । তারপর শেষ দিক দিয়ে প্রিন্ট দিতে হবে । লুপ দিয়ে করলে আপনাদের কোড অনেকটা এরকম হওয়া উচিত ।

দেখা যাচ্ছে যে শেষের ফাংশনটার প্রিন্ট করার কাজ আগে হচ্ছে । আর আমরা দেখতে পাচ্ছি যে শেষের ফাংশনটা যোগফলের ১ম ডিজিট প্রিন্ট করে , আর আমরা এইটাই চাই । ব্যাপারটা আপনারা বুঝে থাকলে রিকার্সন দিয়ে কোডটা করে ফেলুন । দেখবেন লুপের চেয়ে অনেক সোজা । যদি না পারেন তবে দেখে নিন (যেটা আমি চাই না) । আর পারলে মিলিয়ে নিন ।

এভাবে যোগ করলে আপনি যোগফল শুধু প্রিন্ট করে দেখতে পারবেন কিন্তু তা নিয়ে কাজ করতে পারবেন না । এটা আমি শুধু রিকার্সন বুঝানোর জন্য ব্যাবহার করেছি । তবে স্ট্রিং নিয়ে কাজ করলে অনেক বড় সংখার যোগফল বের করতে পারবেন । লুপ দিয়ে যা করা যায় রিকার্সন দিয়ে সব ই করা যায় । লুপ দিয়ে আপনারা যে যে প্রোগ্রাম করেছেন সেগুলো রিকার্সন দিয়ে করার চেষ্টা করুন , দেখবেন খুব দ্রুত রিকার্সন আয়ত্ত করতে পেরেছেন ।

 

5 comments

  1. Rashed says:

    Carry on

  2. shahin alam says:

    its so good for understanding,thank you brother.

  3. Inzamam says:

    যথেষ্ট ভাল হয়েছে ভাই…

  4. shishir says:

    ভাই অনেক সহজ লাগলো । ধন্যবাদ

Leave a Reply

Your email address will not be published. Required fields are marked *