کسی مثبت عدد کا فیکٹریوریج ایک عددی کی پیداوار ہے اور اس کے نیچے موجود تمام عدد ، یعنی ، نمبر ن کا حقائق (جس کی نمائندگی این!) کے ذریعہ دی جائے گی
جاوا میں سٹرنگ مستقل تالاب
n! = 1 * 2 * 3 * 4 *. . . . . * این
0 کی فیکٹوریئل 1 کی تعریف کی گئی ہے اور منفی عدد کے لئے نہیں ہے۔ اسے ڈھونڈنے کے متعدد طریقے ہیں جو ذیل میں درج ہیں-
- سی میں فیکٹریئل پروگراملوپ کے لئے استعمال کرتے ہوئے
- فیکٹریئل پروگرام کا استعمال کرتے ہوئےافعال
- فیکٹریئل پروگرامتکرار کا استعمال کرتے ہوئے
آو شروع کریں.
لوپ فار فیکٹریل استعمال کرنا
کسی عدد کی فیکٹوریئل تلاش کرنے کا یہ سب سے آسان اور آسان طریقہ ہے۔ آئیے پہلے کوڈ ملاحظہ کریں -
# شامل کریں مین مین () {انٹریٹ آئین ، نمبر ، فیکٹ = 1 // فیکٹوریٹریل کو 1 کے طور پر بیان کرنا چونکہ کم سے کم قیمت 1 پرنٹف ہے ('اس کے فیکٹوریلیل کا حساب لگانے کے لئے ایک نمبر درج کریں') سکینف ('٪ d' ، اور نمبر) اگر (نمبر<0) //if the input is a negative integer { printf (“Factorial is not defined for negative numbers.”) } else { for(i=1i0, therefore fact value remains 1 { fact = fact * i // keeps on multiplying and storing in the value of factorial till the input integer is reached } printf(“Factorial of %d = %dn”, num, fact) } return 0 //since we have defined the main() method with a return value of integer type }
آؤٹ پٹ-
5 = 120 کا فیکٹریال
وضاحت -
جس نمبر کی فیکٹوئلری ملنی ہے اسے ان پٹ کے طور پر لیا جاتا ہے اور کسی متغیر میں اسٹور کیا جاتا ہے اور جانچ پڑتال کی جاتی ہے کہ آیا یہ منفی ہے یا نہیں۔ اگر درج کیا گیا عدد صحیح ہے تو مناسب پیغام ظاہر ہوگا۔ فیکٹوریئل کی قدر 1 کے لined پہلے سے طے شدہ ہے کیونکہ اس کی کم سے کم قیمت 1 ہے۔ مثبت انٹیجر کے ل for لوپ کو پھانسی دی جاتی ہے (سوائے اس کے کہ 0 ٹیسٹ کی حالت غلط ہے اور اس طرح حقیقت صفر رہ جاتی ہے)۔ لوپ میں ، فیکٹوریئل کی قدر ہر ایک عدد کے ساتھ ضرب ہوجاتی ہے اور جب تک کہ ان پٹ نمبر تک نہ پہنچ جاتا ہے تو کامیابی کے ساتھ ذخیرہ ہوتا ہے۔ مثال کے طور پر ، ان پٹ = 5 کیلئے ، بہاؤ لوپ میں جاتا ہے اور مندرجہ ذیل اقدامات ہوتے ہیں-
حقیقت = 1 ، i = 1 -> حقیقت = 1 * 1 = 1 -> i = 2
حقیقت = 1 ، i = 2 -> حقیقت = 1 * 2 = 2 -> i = 3
حقیقت = 2 ، i = 3 -> حقیقت = 2 * 3 = 6 -> i = 4
حقیقت = 6 ، i = 4 -> حقیقت = 6 * 4 = 24 -> i = 5
حقیقت = 24 ، i = 5 -> حقیقت = 24 * 5 = 120 -> i = 6
اب 6> 5 ، لہذا ٹیسٹ کی شرط جھوٹی ہو جاتی ہے اور لوپ ختم ہوجاتا ہے۔ حقائق کی قدر ظاہر کی جاتی ہے۔
فیکٹریوری کا استعمال کرتے ہوئے افعال
یہ نقطہ نظر ایک ماڈیولر اپروچ کے طور پر جانا جاتا ہے اور پروگرامنگ کے لئے اس کی پیروی کی جانی چاہئے کیونکہ یہ کافی موثر ہے۔ اس کا ایک فائدہ یہ ہے کہ جب ہمیں کوڈ میں تبدیلیاں کرنے کی ضرورت ہوتی ہے تو اس کے بجائے مکمل کوڈ کو تبدیل کرنے کی بجائے ، ہم صرف متعلقہ کام میں ترمیم کرسکتے ہیں۔ اس نقطہ نظر کا استعمال کرتے ہوئے کسی نمبر کے فیکٹوریٹریل کی تلاش کے لئے کوڈ نیچے دکھایا گیا ہے
# فیکٹوریئل کا حساب لگانے کے ل long لانگ فیکٹوریئل (انٹ اینم) // فنکشن شامل کریں جو پیرامیٹر کی حیثیت سے ایک انٹیجر ویلیو لیتا ہے اور انٹ ٹائپ ویلیو ملتا ہے {انٹ آئ لانگ فیکٹ = 1 (i = 1 i)<= num i++) fact = fact * i return fact //returns to function call } int main() //execution begins from main() method { int num printf('Enter a number to calculate its factorialn') scanf('%d', &num) if(num<0) //if the input is a negative integer { printf('Factorial is not defined for negative numbers.') } printf('Factorial of %d = %dn', num, factorial(num)) //call to factorial function passing the input as parameter return 0 }
آؤٹ پٹ - 5 = 120 کا فیکٹریال
وضاحت-
پروگرام کی منطق یکساں ہے سوائے اس کے کہ مختلف فنکشن کو فیکٹوریئل کا حساب لگانے اور اس اہم طریقہ کو واپس کرنے کے لئے استعمال کیا جاتا ہے جہاں سے عمل درآمد شروع ہوتا ہے۔
اعشاریہ کو بائنری ازگر میں تبدیل کریں
تکرار کا استعمال کرتے ہوئے تکرار
تکرار وہ عمل ہے جس میں ایک فنکشن خود کو بلاتا ہے اور اسی فنکشن کو ریکورسیو فنکشن کہتے ہیں۔ یہ دو حصوں پر مشتمل ہے- ایک بنیادی حالت اور ایک متواتر کال۔ بیس حالت کا حل فراہم کیا جاتا ہے جبکہ بڑی قدر کا حل چھوٹی اقدار میں تبدیل ہو کر حل کیا جاسکتا ہے یہاں تک کہ بیس حل تک پہنچ جاتا ہے اور استعمال نہیں ہوتا ہے۔
تکرار کا استعمال کرتے ہوئے حقائق تلاش کرنے کے لئے ذیل میں کوڈ دیا گیا ہے: -
# شامل کریں حقیقت (انٹ) // فنکشن پروٹو ٹائپ انٹ مین () {اینٹ نم پرنٹف ('وہ نمبر درج کریں جس کی حقیقت پسندی کو تلاش کرنا ہے:') اسکینف ('٪ d' ، اور نمبر) اگر (نمبر<0) { printf('ERROR. Factorial is not defined for negative integers') } printf('Factorial of %d is %d', num, fact(num)) //first call is made return 0 } int fact(int num) { if(num==0) //base condition { return 1 } else{ return(num*fact(num-1)) //recursive call } }
آؤٹ پٹ - 5 = 120 کی فیکٹری
وضاحت -فرض کریں کہ صارف 5 میں ان پٹ کے طور پر داخل ہوتا ہے ، پھر مرکزی () طریقہ میں نمبر کی قیمت 5 ہے۔ جیسے ہی بہاؤ پرنٹ ایف اسٹیٹمنٹ (لائن 12) میں جاتا ہے تو حقائق (5) فنکشن کے لئے کال ہوتی ہے۔ اب حقیقت کے لئے (5) نمبر 5 ہے جو 0 کے برابر نہیں ہے ، لہذا بہاؤ دوسرے بیان میں جاتا ہے جہاں واپسی کے بیان میں تکرار کال کی جاتی ہے اور حقیقت (4) کی جاتی ہے۔ اس عمل کو اس وقت تک دہرایا جاتا ہے یہاں تک کہ بنیادی حالت ، یعنی ، نمبر = 0 تک پہنچ جائے اور 1 لوٹ نہ آجائے۔ اب بہاؤ حقیقت (1) کی طرف جاتا ہے جہاں سے 1 (جیسا کہ حقیقت (1) نمبر = 1) * 1 (حقیقت (0)) سے لوٹی گئی ہے۔ جب تک مطلوبہ قیمت حاصل نہیں ہوجاتی اس عمل کو دہرایا جاتا ہے۔
وقت اور جگہ کی پیچیدگی - تکرار وی / ایس تکرار
تکرار کے لئے
کے بارے میں وقت کی پیچیدگی ، ہم جانتے ہیں کہ حقیقت پسندانہ 0 صرف ایک موازنہ ہے۔ لہذا ٹی (0) = 1۔ کسی بھی دوسرے نمبر کی حقیقت کے لئے اس عمل میں ایک موازنہ ، ایک ضرب ، ایک گھٹاؤ ، اور ایک فنکشن کال شامل ہے۔ لہذا
T (n) = T (n-1) +3
= T (n-2) +6
= T (n-3) +9
= اور نرپ۔
= T (n-k) + 3k
چونکہ ہم T (0) = 1 اور k = n ، (n-k) = 0 کے لئے جانتے ہیں
لہذا T (n) = T (0) + 3n
= 1 + 3 این
لہذا کوڈ میں وقت کی پیچیدگی O (n) ہے۔
کے بارے میں خلائی پیچیدگی ، ہر کال کے لئے ایک اسٹیک تیار کیا جاتا ہے جو اس کی قدر ہونے تک برقرار رہے گاحساب اور واپس آئے. مثال کے طور پر n = 5 کیلئے درج ذیل اسٹیکس کو برقرار رکھنا ہوگا
f (5) -> f (4) -> f (3) -> f (2) -> f (1) -> f (0)
جیسا کہ ہم دیکھ سکتے ہیں کہ 5 (اسٹیکس) برقرار رکھنا پڑے گا جب تک کہ ایف (0) پر فون نہ آجائے جس کی قیمت ہےجانا جاتا ہے اور واپس آ گیا ہے. لہذا n حقیقت پسندی کے لئے ، ن اسٹیکس کو برقرار رکھنا ہوگا۔ اس طرح خلائی پیچیدگیO (n) ہے۔ مذکورہ تصویروں سے یہ بھی واضح ہے کہ ن = 5 ، 5 اسٹیک ہونا پڑے گابرقرار رکھا. لہذا n حقیقت پسندی کے لئے ، ن اسٹیکس کو برقرار رکھنا ہوگا۔ اس طرح خلائی پیچیدگی O (n) ہے۔
تشخیص کے لئے-
کے بارے میں وقت کی پیچیدگی ، لوپ کے اندر ن تکرار ہوتے ہیں ، لہذا وقت کی پیچیدگی O (n) ہے۔
کے بارے میں خلائی پیچیدگی ، تکراری حل کے ل only صرف ایک اسٹیک موجود ہے جسے برقرار رکھنے کی ضرورت ہے اور ایک عدد متغیر استعمال کیا جاتا ہے۔ تو خلائی پیچیدگی O (1) ہے۔
بس اس مضمون کے لئے۔ مجھے امید ہے کہ آپ وقت کی پیچیدگیوں کے ساتھ ساتھ سی میں فیکٹوریئل پروگرام کے تصور کو بھی سمجھ چکے ہوں گے۔
اگر آپ کو کوئی سوالات آتے ہیں تو ، 'سی میں حقیقت پسندانہ پروگرام' کے تبصرے کے سیکشن میں اپنے تمام سوالات کے بارے میں آزادانہ طور پر پوچھیں اور ہماری ٹیم جواب دینے میں خوش ہوگی۔