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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.857 из 5
Похожие ответы