paizaラーニングレベルアップ問題集のフィボナッチ数をやってみました。
問題
方針
- 最初に長さ$N$の整数配列を宣言し、
- $i=0,1$に対して$F_i=i$
- $i\ge2$に対して$F_i=F_{i-1}+F_{i-2}$
とする
- 最初に$\{0,1\}$のリストを宣言し、$n\ge2$について$F_n=F_{n-1}+F_{n-2}$を追加する
いずれかの方法で解いていきます。
C
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
int F[n];
for (int i = 0; i < n; i++)
if (i < 2) F[i] = i;
else F[i] = F[i-1] + F[i-2];
for (int i = 0; i < n; i++) printf("%d\n", F[i]);
return 0;
}
C++
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> F = { 0, 1 };
for (int i = 2; i < n; i++) F.push_back(F[i-1] + F[i-2]);
for (int i = 0; i < n; i++) cout << F[i] << endl;
return 0;
}
C#
using System;
class Program
{
public static void Main()
{
int n = int.Parse(Console.ReadLine());
int[] F = new int[n];
for (int i = 0; i < n; i++)
if (i < 2) F[i] = i;
else F[i] = F[i-1] + F[i-2];
for (int i = 0; i < n; i++) Console.WriteLine(F[i]);
}
}
Go
package main
import "fmt"
func main() {
var n int
fmt.Scan(&n)
F := []int{ 0, 1 }
for i := 2; i < n; i++ {
F = append(F, F[i-1] + F[i-2])
}
for i := 0; i < n; i++ {
fmt.Println(F[i])
}
}
Java
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
sc.close();
int[] F = new int[n];
for (int i = 0; i < n; i++)
if (i < 2) F[i] = i;
else F[i] = F[i-1] + F[i-2];
for (int i = 0; i < n; i++) System.out.println(F[i]);
}
}
JavaScript
const n = Number(require("fs").readFileSync("/dev/stdin", "utf8").trim());
const F = [ 0, 1 ];
for (var i = 2; i < n; i++) F.push(F[i-1] + F[i-2]);
for (var i = 0; i < n; i++) console.log(F[i]);
Kotlin
fun main() {
val n = readLine()!!.toInt()
val F = IntArray(n)
for (i in 0 until n)
F[i] = if (i < 2) i else F[i-1] + F[i-2]
for (f in F) println(f)
}
PHP
<?php
$n = intval(fgets(STDIN));
$F = [ 0, 1 ];
for ($i = 2; $i < $n; $i++) $F[] = $F[$i-1] + $F[$i-2];
foreach ($F as $f) echo $f, PHP_EOL;
?>
Perl
my $n = int(<STDIN>);
my @F = (0, 1);
while (scalar(@F) < $n) {
push @F, $F[-1] + $F[-2];
}
foreach $f (@F) {
print "$f$/";
}
Python3
n = int(input())
F = [0, 1]
while len(F) < n:
F.append(F[-1] + F[-2])
for f in F:
print(f)
Ruby
N = gets.to_i
F = [0, 1]
(2...N).each do
F << F[-1] + F[-2]
end
F.each do |f|
p f
end
Scala
import scala.io.StdIn._
object Main extends App{
val n = readInt()
val F = new Array[Int](n)
for (i <- 0 until n) F(i) = if (i < 2) i else F(i-1) + F(i-2)
for (f <- F) println(f)
}
Swift
let n = Int(readLine()!)!
var F = [0, 1]
for i in 2..<n {
F.append(F[i-1] + F[i-2])
}
for f in F {
print(f)
}