【问题标题】:calculate the sum of 1 array using recursion with only 1 entry in c使用 c 中只有 1 个条目的递归计算 1 个数组的总和
【发布时间】:2021-01-16 02:26:52
【问题描述】:

就像标题说我需要使用递归对数组求和,但它不起作用。

int somme_elements(int t[10])
{   int static i = -1 ;
    if (i<10)
    {
        i++;
        return t[i] + somme_elements(t+1);
    }

}

int main()
{
  int t[10]={0} ; int i = 0 ;
  /*saisie_tableau(t);/*
  /*afficher_tableau(t);*/
  printf("la somme des valeur du tableau t est %d    ",somme_elements(t));
   return 0;
}

最后一个 printf 应该打印总和值。但这总是一个很大的数字,或者根本没有任何意义。 谢谢各位

【问题讨论】:

  • i9 你进入if 块,增加i 并尝试访问不存在的t[10]

标签: c


【解决方案1】:

试试

int somme_elements(int t[10])
{   int static i = -1 ;
    if (i<10)
    {
        i++;
        return t[i] + somme_elements(t);
    } else return 0;
}

如果i&lt;10 为真,只需再次调用该函数,递增的静态 i 将指向下一项。
如果i&lt;10为false,则函数返回0,加法返回null。

注意:我只保留原始问题的缩进和格式(2021-01-16)。

【讨论】:

  • 但我不喜欢使用静态变量!
  • 感谢它有效。你能解释一下为什么我必须添加 else return 0 吗?我认为我真的不需要它。因为第一个 if 应该可以解决问题。谢谢
  • 好吧,如果你不使用return,编译器可能会返回一个不需要的值......在C中,更好更容易地指定一个return! (stackoverflow.com/questions/9003283/…)
  • 但如果我返回 0 。不是说第一次返回就不算数了吗?
  • 我仍然对递归返回的概念有疑问。因为有时在没有第一次返回的情况下,循环工作得很好。
猜你喜欢
  • 2019-05-15
  • 1970-01-01
  • 2012-11-01
  • 2015-08-04
  • 2022-07-06
  • 2019-09-26
  • 1970-01-01
  • 2018-12-10
  • 2022-01-24
相关资源
最近更新 更多