请讲解一下递归和递推
比如数列a(n)=a(n-1)+n,a(1)=1。
递归:
a(10)=a(9)+10,要计算a(10),必须要先算出a(9);
a(9)=a(8)+9,要计算a(9),必须要先算出a(8);
a(8)=a(7)+8,要计算a(8),必须要先算出a(7);
……
a(2)=a(1)+2,要计算a(2),必须要先算出a(1);
a(1)=1,a(1)已知。
由a(1)已知可以计算a(2)、a(3)、a(4)、……、a(10)。
----------
如果你愿意编十个函数互相调用也可以,
比如long ashi( int i )计算a(10),
在这个函数中调用 long ajiu(int i),调用计算a(9)的函数,
在long ajiu(int i)中调用long aba(int i),……
……
以上做法完全正确,就是烦了点,
我们可以用一个函数反复调用自己十遍。
long a(int i)
{
if(i==1) return 1;
else return a(i-1);//调用自己
}
以上就叫递归。
对于这种类型的题目,用递归来编是最容易理解的。