এখানে আমরা একটি ট্রিকি সমাধান দেখব। আমরা সেমিকোলন ব্যবহার না করেই ১ থেকে N পর্যন্ত সংখ্যা প্রিন্ট করব।
এই সমস্যাটি দুটি পদ্ধতিতে সমাধান করা যায়। প্রথমটি ইটেরেটিভ পদ্ধতি, এবং দ্বিতীয়টি রিকার্সিভ পদ্ধতি।
পদ্ধতি ১
printf() ফাংশন স্ট্রিংয়ের দৈর্ঘ্য রিটার্ন করে যাতে এটি একটি নন-জিরো ভ্যালু। আমরা কন্ডিশনের সাথে লজিক্যাল AND করে রেজাল্ট প্রিন্ট করতে পারি। তারপর কাউন্টারের মান বাড়িয়ে দিই।
উদাহরণ কোড
#include <stdio.h>
#define N 20
int main(int num, char *argv[]) {
while (num <= N && printf("%d ", num) && num++) {
// while বডি খালি।
}
}
আউটপুট
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
পদ্ধতি ২
দ্বিতীয় পদ্ধতিতে আমরা রিকার্সন ব্যবহার করে একই কাজ করব। main ফাংশন ببعض আর্গুমেন্টের সাথে কল হবে। এই main রিকার্সিভলি কল হবে।
উদাহরণ কোড
#include <stdio.h>
#define N 20
main(int val) {
if (val <= N && printf("%d ", val) && main(val + 1)) {
// বডি খালি
}
}
আউটপুট
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20