首页 > 解决方案 > 递归函数来确定所需的操作以达到给定的结果

问题描述

我有一个小问题,我现在似乎无法解决问题。有人可以帮忙吗?

基本上听起来像这样:

编写一个递归函数,确定可以在 1 到 N>=2 的整数之间双关的运算符(+ 和 -)的所有组合,以便表达式的结果是给定的数字 X。如果没有组合,则打印“N /一个”。

输入示例:

6
3

输出应该是:

1 + 2 + 3 - 4 - 5 + 6 = 3
1 + 2 - 3 + 4 + 5 - 6 = 3
1 - 2 - 3 - 4 + 5 + 6 = 3 

标签: c#recursion

解决方案


此控制台应用程序示例将解决您的问题:

class Program
    {
        static void Main(string[] args)
        {
            int result = Search(2, 6, 1, 3);

            Console.WriteLine(result);
        }

        private static int Search(int start, int end, int current, int searched)
        {
            if (start > end)
            {
                return Convert.ToInt32(current == searched);
            }

            return Search(start + 1, end, current + start, searched) + Search(start + 1, end, current - start, searched);
        }

    }

推荐阅读