使用递归计算数组中只有正元素的和数组中充满了随机元素(负和正)。现在我只想计算正元素的总和。迭代没有问题,但是在递归版本中我只能得到负数和正数之和。我如何在递归版本中“检查”它只能对正元素求和?迭代版本:publicintIterSomPosElem(int[]tabel,intn){n=0;对于(inti=0;i=0){n+=tabel[i];}}返回n;当前的递归版本(总结所有元素而不仅仅是正数):publicintRecuSomPosElem(int[]tabel,intn){if(n==1)returntabel[0];//stopCriteriumelse{return(tabel[n-1]+RecuSomPosElem(tabel,n-1));//如何检查,所以它只对正元素求和并“忽略”负元素。这是作业吗?为什么你需要用递归函数来做到这一点?在现实世界中,它将是一些简单的LINQintpositiveSum=tabel.Where(i=>i>0).Sum();intfoo[]=new[]{1,-9,10,8,-16,...}怎么样?intsumOfPostiveInts=foo.Sum(x=>xx>0).Sum();喜欢?publicintRecuSomPosElem(int[]tabel,intn){if(n==1)returntabel[0];//stopCriteriumelse{varvalueToSum=tabel[n-1]>0?表格[n-1]:0;return(valueToSum+RecuSomPosElem(tabel,n-1));}}publicintRecuSomPosElem(int[]tabel,intn){if(n==1)returntabel[0];//stopCriteriumelse{if(tabel[n-1]>0)return(tabel[n-1]+RecuSomPosElem(tabel,n-1));否则返回RecuSomPosElem(tabel,n-1));你是如此接近!用你的算法,不过只是加个校验,看表中的当前值是否为负数如果为负数,则转到下一个数组项:以上是C#学习教程:使用递归计算中的仅正元素之和anArrayShare如果对你有用,需要进一步了解C#学习教程,希望你多多关注——privatestaticintRecuSomPosElem(int[]tabel,intn){inti=n-1;while(tabel[i]0)i--;如果(i==0){返回0;//stopCriterium}else{return(tabel[i]+RecuSomPosElem(tabel,i));}}本文采集自网络,不代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
