Climbing Stairs
Count the distinct ways to climb n stairs taking 1 or 2 steps at a time (Fibonacci-style DP).
Sample input
5
Sample output
8
Solution
def climb_stairs(n):
a, b = 1, 1
for _ in range(n):
a, b = b, a + b
return a
print(climb_stairs(5))
function climbStairs(n) {
let a = 1, b = 1;
for (let i = 0; i < n; i++) {
[a, b] = [b, a + b];
}
return a;
}
console.log(climbStairs(5));
public class Main {
static int climbStairs(int n) {
int a = 1, b = 1;
for (int i = 0; i < n; i++) {
int next = a + b;
a = b;
b = next;
}
return a;
}
public static void main(String[] args) {
System.out.println(climbStairs(5));
}
}
fun climbStairs(n: Int): Int {
var a = 1
var b = 1
repeat(n) {
val next = a + b
a = b
b = next
}
return a
}
fun main() {
println(climbStairs(5))
}
func climbStairs(_ n: Int) -> Int {
var a = 1, b = 1
for _ in 0..<n {
let next = a + b
a = b
b = next
}
return a
}
print(climbStairs(5))
int climbStairs(int n) {
int a = 1, b = 1;
for (var i = 0; i < n; i++) {
final next = a + b;
a = b;
b = next;
}
return a;
}
void main() {
print(climbStairs(5));
}
#include <iostream>
using namespace std;
int climbStairs(int n) {
int a = 1, b = 1;
for (int i = 0; i < n; i++) {
int next = a + b;
a = b;
b = next;
}
return a;
}
int main() {
cout << climbStairs(5) << endl;
return 0;
}
#include <stdio.h>
int climbStairs(int n) {
int a = 1, b = 1;
for (int i = 0; i < n; i++) {
int next = a + b;
a = b;
b = next;
}
return a;
}
int main() {
printf("%d\n", climbStairs(5));
return 0;
}