【发布时间】:2014-05-14 16:26:27
【问题描述】:
编辑:不是家庭作业,我正在尝试解决过去几年的一个测试,只是在学习。
我有这个功能,想知道要采取哪些步骤才能将其转换为递归功能。
这是我的函数,它将前 N 个奇数相加:
4^2 = 1+3+5+7 = 16;
int quadIT(int n){
int x=0;
int z=1;
int y=n;
while(y>0){
x+=z;
z+=2;
y--;
}
return x;
}
可能上面的函数不是最好的方法。
如果有任何帮助,我将不胜感激。
【问题讨论】:
-
转换成非迭代函数不是更好吗?总和有一个封闭表达式(前 N 个奇数为 N*N)。递归的规则是什么?建立基本案例;如果输入不是基本情况,则使用更接近基本情况的参数进行递归。
-
你能详细说明“基本情况”的表达吗?没弄好。
-
任何(安全)递归函数的一般方案都包含两个部分。一部分是可以简单解决的一个或多个基本案例;另一部分涉及递归。例如,如果 N = 0,则前 N 个奇数之和也为 0。如果 N 大于 0,那么您需要知道如何计算 function(N-1) 并将该结果与N 给出最终结果(对于递归堆栈中的这个级别)。看看下面的答案:他们中的大多数(如果不是全部)都说明了这一点。