本文共 835 字,大约阅读时间需要 2 分钟。
青蛙跳台阶问题可以通过递归或迭代的方法来解决。递归方法虽然简单,但可能存在性能问题,因此迭代方法更为高效。以下是详细的解决方案:
首先,定义函数 jumpFloor(int n)
,该函数返回青蛙跳上 n
级台阶的总跳法数。函数逻辑如下:
处理边界情况:
n
小于等于0,返回-1。n
等于1,返回1。n
等于2,返回2。对于 n >= 3
的情况,使用迭代法计算:
a
和 b
分别表示 f(n-2)
和 f(n-1)
。n
,在每次循环中计算当前跳法数 c = a + b
,然后更新 a
和 b
。具体代码如下:
#define _CRT_SECURE_NO_WARNINGS#includeint jumpFloor(int n) { if (n <= 0) { return -1; } if (n == 1) { return 1; } if (n == 2) { return 2; } int a = 1, b = 2, c; for (int i = 3; i <= n; ++i) { c = a + b; a = b; b = c; } return b;}int main() { int i; scanf("%d", &i); printf("%d\n", jumpFloor(i)); return 0;}
代码解释:
jumpFloor
函数处理了所有可能的 n
值,返回相应的跳法数。main
读取输入并调用 jumpFloor
函数,输出结果。这个方法通过迭代避免了递归的重复计算,时间复杂度为 O(n),空间复杂度为 O(1),非常高效。
转载地址:http://yvwaz.baihongyu.com/