Алгоритм вычисления числа сочетаний с использованием рекуррентной формулы - C#
Формулировка задачи:
Заданием было(дословно):
Запрограммировать рекурсивный алгоритм вычисления числа сочетаний, используя рекуррентную формулу и учитывая, что .
В общем, получилось это:
В итоге, ошибки,ничего не вышло.Плоховато я понял рекурсию,наверное.Скажите,что и как нужно исправить,пожалуйста.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Лаба_7 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { int n = 3; int k = 33; Int64 b = Soch(n, k); Text = b.ToString(); Int64 f; } public static Int64 Soch (int n, int k) { if (k == 1 ) return n; if (k == n) return 1; if (n >= 0 & k >= 0) { return f = Soch(n - 1, k) * Soch(n - 1, k - 1); } } } }
Решение задачи: «Алгоритм вычисления числа сочетаний с использованием рекуррентной формулы»
textual
Листинг программы
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Лаба_7 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { int n = int.Parse(textBox1.Text); int k = int.Parse(textBox2.Text); if (n >= k) { int b = Soch(n, k); string v = b.ToString(); MessageBox.Show("Значение рекурсивного алгоритма = "+ v); } else { MessageBox.Show("N не может быть меньше,чем K"); } } public static int Soch(int n, int k) { if (k == 1) return n; if (k == n) return 1; return Soch(n - 1, k) + Soch(n - 1, k - 1); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д