力扣-爬楼梯题解
1.查找规律,发现他与斐波那契数列相同,则可以使用递归的方法,和for循环的方法。
递归方法:
int get(int num)
{
if(num<=2)
{
return num;
}
else{
return (get(num-1)+get(num-2));
}
}
由于在使用递归时,会产生重复的计算,则可以使用一个数组进行记录,方法优化如下
int get(int num)
{
int jilu[num+1];
for(int i=0;i<=num;i++)
{
jilu[i]=-1;
}
return clib(num,$jilu[0]);
}
int clib(int num,int jilu[])
{
if(jilu[num]>0)
{
return jilu[num]; //免去重复计算
}
if(num<=2)
{
jilu[num]=num;
}
else
{
jilu[num]=clib(num-1)+clib(num-2);
}
return jilu[num];
}
使用for循环,这个比较容易想到,并且空间比较节省
int get(int num)
{
int lastt=1,last=2,sum=0;
if(num<=2)
{
return num;
}
else
{
for(int temp=2;temp<num;temp++)
{
sum=lastt+last;
lastt=last;
last=sum;
}
}
}