目录
小乐乐走台阶
题目描述:
思路分析:
思路1:
思路2:
代码实现
方法一:(递归)
方法二:(非递归)
小乐乐走台阶题目描述:
思路分析:
思路1:
通过分析找规律发现此问题是个斐波那契数列问题(详见 初阶C语言-6000字带你走进函数(后篇)) ,从而解题。
思路2:
根据小乐乐每次走台阶的可能性(2种可能:走一阶或走两阶),用递归方法实现。
通过分析找规律发现此问题是个斐波那契数列问题(详见 初阶C语言-6000字带你走进函数(后篇)) ,从而解题。
思路2:
根据小乐乐每次走台阶的可能性(2种可能:走一阶或走两阶),用递归方法实现。
根据小乐乐每次走台阶的可能性(2种可能:走一阶或走两阶),用递归方法实现。
代码实现
方法一:(递归)
#include
int fib(int n)
{
if (n <= 2)
return n;
else
return fib(n - 1) + fib(n - 2);
}
int main()
{
int n = 0;
scanf("%d",&n);
int num = fib(n);
printf("%dn",num);
return 0;
}
#includeint fib(int n) { if (n <= 2) return n; else return fib(n - 1) + fib(n - 2); } int main() { int n = 0; scanf("%d",&n); int num = fib(n); printf("%dn",num); return 0; }
方法二:(非递归)
//斐波那契数列问题
#include
int fib(int n)
{
int left = 1;
int right = 2;
int ret = 0;
if (n <= 2)
return n;
else
{
while (n-2>0)
{
ret = left + right;
left = right;
right = ret;
//这两个代码不能调换, 写成 right = ret; left = right;就错了!!!
n--;
}
return ret;
}
}
int main()
{
int n = 0;
scanf("%d",&n);
int num = fib(n);
printf("%dn",num);
return 0;
}



