Алгоритм вычисления числа сочетаний с использованием рекуррентной формулы - 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);
}
}
}