如何找到算术级数的乘积?

时间:2017-06-07 10:06:28

标签: c#

我需要编写一个函数来查找算术级数元素的乘积(使用递归)。我只是模糊地知道如何做到这一点 - 像这样:

public static int product(int n)
{
   if (n == 0)
      return 0;
   else
      return <some code> * product(n-1);
}

你能不能给我一个提示?

2 个答案:

答案 0 :(得分:0)

你需要编写一个函数,它首先接受3个参数的术语(f),公共差异(d)和AP中术语(n)的总数。

     int fun(int f,int d,int n){
      if(n==0) return 1;
else (f+(n-1)*d) * fun(f,d,n--);
    }

答案 1 :(得分:0)

以下代码可以解决这个问题:

public static int Product(int arithInitial, int arithDifference, int n)
{
   if (n == 1)
      return GetArithmeticSeriesTerm(arithInitial,arithDifference,1);
   else
      return GetArithmeticSeriesTerm(arithInitial,arithDifference,n) * Product(arithInitial, arithDifference, n-1);
}

public static int GetArithmeticSeriesTerm(int initial, int difference, int position)
{
    return initial+difference*(position-1);
}

我创建了一个新方法来获取算术级数的元素。我还将递归的基本情况更改为n == 1,然后调用算术系列术语。

对于它的作用,它应该是非常自我解释的。

对于1,3,5,7系列的前四个术语,你会称之为

int result = Product(1,2,4)`

注意:您不需要两种方法,但我觉得引入第二种方法可以更清楚地了解代码的作用。你当然可以只是内联表达式,当然你的基本情况实际上可以简化为initial,如果你想让它更清洁一点。使用完整的方法可以非常直观地了解我们为什么这样做。