لفهم العودية ، تحتاج إلى فهم العودية ... q> نبسب ؛
التكرار code> & nbsp؛ في البرمجة - خطوة واحدة tt> لعملية معالجة البيانات الدورية. & nbsp؛ غالبًا ما تستخدم الخوارزميات التكرارية في الخطوة الحالية (التكرار) نتيجة نفس العملية أو الإجراء المحسوب في الخطوات السابقة. & nbsp ؛ أحد الأمثلة على هذه الحسابات هو حساب علاقات التكرار. & nbsp ؛ مثال بسيط على القيمة العودية هو العامل: \ (N! = 1 \ cdot 2 \ cdot 3 \ cdot \ ... \ \ cdot N \) span>. حساب القيمة في كل خطوة (التكرار) هو \ (N = N \ cdot i \) . & nbsp؛ عند حساب قيمة \ (N \) ، نأخذ القيمة المخزنة بالفعل & nbsp؛ \ (N \) span >. <ر /> يمكن أيضًا وصف مضروب الرقم باستخدام الصيغة المتكررة code>: \ (\ start {equation *} n! = \ begin {cases} 1 & amp؛ \ text {n & lt؛ = 1،} \\ (n-1)! \ cdot n & amp؛ \ text {n & gt؛ 1.} \ end {cases} \ end {equation *} \) قد تلاحظ أن هذا الوصف ليس أكثر من وظيفة تكرارية. هنا السطر الأول ( \ (n & lt؛ = 1 \) ) هو الحالة الأساسية (شرط إنهاء العودية) والسطر الثاني هو الانتقال إلى الخطوة التالية. نبسب ؛ نبسب ؛ <الجسم> دالة التوزيع العودية strong> الخوارزمية التكرارية strong> <قبل> static int Factorial (int n) { إذا (n & gt؛ 1) عودة ن * عاملي (ن - 1) ؛ آخر يعود 1 ؛ } <قبل> int x = 1؛ لـ (int i = 2 ؛ i & lt ؛ = n ؛ i ++) س = س * ط ؛ Console.WriteLine ("٪ d"، x)؛ يجب أن يكون مفهوماً أن استدعاءات الوظائف تنطوي على بعض النفقات الإضافية ، لذا فإن حساب العوامل غير العودية سيكون أسرع قليلاً. & nbsp؛ الخلاصة: strong> حيث يمكنك كتابة برنامج باستخدام خوارزمية تكرارية بسيطة ، بدون تكرار ، فأنت بحاجة إلى الكتابة بدون تكرار. ولكن لا يزال هناك فئة كبيرة من المشاكل حيث يتم تنفيذ العملية الحسابية فقط عن طريق العودية. من ناحية أخرى ، غالبًا ما تكون الخوارزميات العودية أكثر قابلية للفهم.
الصيغة المتكررة code>: \ (\ start {equation *} n! = \ begin {cases} 1 & amp؛ \ text {n & lt؛ = 1،} \\ (n-1)! \ cdot n & amp؛ \ text {n & gt؛ 1.} \ end {cases} \ end {equation *} \) قد تلاحظ أن هذا الوصف ليس أكثر من وظيفة تكرارية. هنا السطر الأول ( \ (n & lt؛ = 1 \) ) هو الحالة الأساسية (شرط إنهاء العودية) والسطر الثاني هو الانتقال إلى الخطوة التالية. نبسب ؛ نبسب ؛ <الجسم> دالة التوزيع العودية strong> الخوارزمية التكرارية strong> <قبل> static int Factorial (int n) { إذا (n & gt؛ 1) عودة ن * عاملي (ن - 1) ؛ آخر يعود 1 ؛ } <قبل> int x = 1؛ لـ (int i = 2 ؛ i & lt ؛ = n ؛ i ++) س = س * ط ؛ Console.WriteLine ("٪ d"، x)؛ يجب أن يكون مفهوماً أن استدعاءات الوظائف تنطوي على بعض النفقات الإضافية ، لذا فإن حساب العوامل غير العودية سيكون أسرع قليلاً. & nbsp؛ الخلاصة: strong> حيث يمكنك كتابة برنامج باستخدام خوارزمية تكرارية بسيطة ، بدون تكرار ، فأنت بحاجة إلى الكتابة بدون تكرار. ولكن لا يزال هناك فئة كبيرة من المشاكل حيث يتم تنفيذ العملية الحسابية فقط عن طريق العودية. من ناحية أخرى ، غالبًا ما تكون الخوارزميات العودية أكثر قابلية للفهم.
static int Factorial (int n) { إذا (n & gt؛ 1) عودة ن * عاملي (ن - 1) ؛ آخر يعود 1 ؛ }
int x = 1؛ لـ (int i = 2 ؛ i & lt ؛ = n ؛ i ++) س = س * ط ؛ Console.WriteLine ("٪ d"، x)؛
K (n)
n
1000 ms 32 Mb Rules for program design and list of errors in automatic problem checking