피보나치 수열이란, 첫 번째 항의 값이 0이고 두 번째 항의 값이 1일 때, 이후의 항들은 이전의 두 항을 더한 값으로 이루어지는 수열을 말한다.
예) 0, 1, 1, 2, 3, 5, 8, 13
인풋을 정수 n으로 받았을때, n 이하까지의 피보나치 수열을 출력하는 프로그램을 작성하세요
489개의 풀이가 있습니다.
n=1000000000
result=[0,1]
while 1:
temp = result[-1]+result[-2]
if temp < n:
result.append(temp)
else:
break
print(result)
array = [0,1]
def fibonach(n):
i=0
while array[i]+array[i+1] <= n:
array.append(array[i]+array[i+1])
i+=1
public static void main(String args[]){
int count = 8;
for(int i=0; i<count; i++){
System.out.print(fibonacci(i) + " ");
}
}
public static int fibonacci(int n){
if(n <= 1){
return n;
}else{
return fibonacci(n-2) + fibonacci(n-1);
}
}
n = int(input())
pibonacci = [0, 1]
while pibonacci[-1] <= n:
pibonacci.append(pibonacci[-1] + pibonacci[-2])
del pibonacci[-1]
print(pibonacci)
n=int(input("정수를 입력하세요:"))
sequence=[0,1]
while True:
number=sequence[-1]+sequence[-2]
if number<=n:
sequence.append(number)
else:
break
print(sequence)
void Fibo(int input) {
int arr[2] = {0, 1};
int temp = arr[0]+arr[1];
printf("%d", arr[0]);
while(temp <= input) {
printf("%d ", temp);
temp = arr[0]+arr[1];
arr[0] = arr[1];
arr[1] = temp;
}
}
Python
def fibo(n):
# 두수를 더할 리스트
ar = [0,1]
# 최초 0,1 은 그냥 출력하고
print(ar[0])
print(ar[1])
# 무한 돌면서
while 1:
# 리스트 합계 구하고
x = sum(ar)
# 합계가 n 을 초과하면 스톱
if (x >n):
break
# 데이터 스왑하고 출력
ar[0] = ar[1]
ar[1] = x
print(x)
fibo(15)
c 언어입니다.
#include <stdio.h>
int main(void)
{
int num1 = 0, num2 = 1, num3 = 0, i = 0, n = 0;
printf("피보나치 수열을 구할때 어느 숫자 이하까지 구하고 싶은가?");
scanf("%d", &n);
while(1)
{
if(n < 0)
{
printf("음수인 피보나치 수가 없습니다.");
break;
}
printf("%d\n", 0);
if(n==0)
{
break;
}
printf("%d\n", 1);
i = 2;
while(1)
{
if(n - num1 + 1 <= num3)
break;
else
{
num3 = num1+num2;
printf("%d\n", num3);
num1 = num2, num2 = num3;
}
i++;
}
break;
}
return 0;
}
x = [0, 1]
y = int(input("정수 n을 입력해주세요 : "))
while x[len(x)-1] < y:
x.append(x[len(x)-2]+x[len(x)-1])
print(x)
def Fibonacci_fsequence(num):
result = [0, 1]
while result[-1] <= num:
result += [result[-1] + result[-2]]
result.pop()
print(result)
print('인풋을 정수 n으로 받았을때, n 이하까지의 피보나치 수열을 출력하는 프로그램 입니다.')
num = input('정수 n을 입력하세요. : ')
Fibonacci_fsequence(int(num))
int input = 13, n1 = 0, n2 = 1;
int fibonacci(int input, int n1, int n2) {
if ((n1 + n2) >= input)
return (n1 + n2);
return (fibonacci(input, n2, n1 + n2));
}
clojure
(defn fib [a b]
(cons a (lazy-seq (fib b (+' a b)))))
(take 100 (fib 0 1))
;=> (0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309 3524578 5702887 9227465 14930352 24157817 39088169 63245986 102334155 165580141 267914296 433494437 701408733 1134903170 1836311903 2971215073 4807526976 7778742049 12586269025 20365011074 32951280099 53316291173 86267571272 139583862445 225851433717 365435296162 591286729879 956722026041 1548008755920 2504730781961 4052739537881 6557470319842 10610209857723 17167680177565 27777890035288 44945570212853 72723460248141 117669030460994 190392490709135 308061521170129 498454011879264 806515533049393 1304969544928657 2111485077978050 3416454622906707 5527939700884757 8944394323791464 14472334024676221 23416728348467685 37889062373143906 61305790721611591 99194853094755497 160500643816367088 259695496911122585 420196140727489673 679891637638612258 1100087778366101931 1779979416004714189 2880067194370816120 4660046610375530309 7540113804746346429 12200160415121876738N 19740274219868223167N 31940434634990099905N 51680708854858323072N 83621143489848422977N 135301852344706746049N 218922995834555169026N)
Scala
def fib(n: Int): List[Long] = {
def fib: Stream[Long] = 0 #:: 1 #:: fib.zip(fib.tail).map{case (a, b) => a + b}
fib.takeWhile(_ <= n).toList
}
fib(10).foreach(println)
제가 푼건 아니고 루비 api에 있는 예제에서 가져왔습니다.
def fib(n)
Enumerator.new do |y|
i = j = 1
loop do
y << i
i, j = j, i + j
end
end.take(n)
end
이거 말고도 hash.new를 이용하는 법도 널리 알려진것같아요.
fib = Hash.new {|h, k| h[k] = h[k - 1] + h[k - 2]}
fib[0] = fib[1] = 1
(1..n).each { |i| p fib[i] }
f=->(n) do
loop.
lazy.
with_object([0,1]).
map{|_,v|v[0].tap{v[1]=v[0]+(v[0]=v[1])}}.
take_while{|x|x<n}.
to_a
end
f.call(100) # => [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
fibonacci.go
func fibonacci() func() int {
x, y := 0, 1
return func() int {
x, y = y, x + y
return x
}
}
func main() {
n := 8
f := fibonacci()
for i := 0; i < n-1; i++ {
fmt.Printf("%d ", f())
}
}
Scala 풀이
def fib(n:Int, a:Int = 0, b:Int = 1): List[Int] = {
if(a > n) Nil
else a +: fib(n, b, a+b)
}
print(fib(13).mkString(", "))
coding by python beginner
def pivo(n):
if n == 0: print([0]); return
t0 = [0,1]
while t0[len(t0)-2] + t0[len(t0)-1] <= n:
t0.append(t0[len(t0)-2] + t0[len(t0)-1])
print(t0);
Perl
my $end=$ARGV[0];
my @fibo=(0,1);
my $i=2;
my $v;
while(($v=$fibo[$i-1]+$fibo[$i-2])<$end)
{
push @fibo,$v;
$i++;
}
print "@fibo";
자바입니다.
public class Fibonachi {
public static void main(String[] args) {
System.out.println(Fibonachi.fiboSequence(8));
}
public static String fiboSequence(int n){
StringBuffer sb = new StringBuffer();
for(int i=1; i<=n; i++){
if(i!=1) sb.append(", ");
sb.append(fibonachi(i));
}
return sb.toString();
}
public static int fibonachi(int n){
int result=0;
if(n>2) {
result = fibonachi(n-2)+fibonachi(n-1);
}
if(n<=2) result = n-1;
return result;
}
}
파이썬 2.7 사용했습니다.
ans = raw_input()
a = 0
b = 1
i = 0
print a
while loop :
print b
b = a + b
a = b - a
i = i + 1
if i == ans :
continue
n = input("Enter number: ")
num_pre = -1L
def fibonacci(x,y):
global num_pre
if num_pre == -1L:
num_pre = 1L
temp = num_pre + x
num_pre = x
print temp
return temp
fibo_n = reduce(fibonacci,[0]*n)
print fibo_n
0과 1를 구한다음 계속 수열을 만든다. 만든 값이 입력값보다 작거나 같을때까지 출력한다.
num=raw_input("number:")
last=int(num)
sum=0
value1=0
value2=1
while value2 <= last:
#print value1,value2
new_value=value1+value2
value1=value2
value2=new_value
print value1,
print ""
package fibonacci;
import java.util.Scanner;
public class fibonacci {
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
System.out.print("피보나치 수열을 구할 정수 N을 입력하세요: ");
int n = scanner.nextInt();
int i=0;
while( fibonacci(i)<=n ){
i++;
} //정수n 이하의 피보나치 항수를 계산
int count = i--;
for(i=0; i<count; i++){
System.out.print(fibonacci(i) + " ");
}
}
public static int fibonacci(int n){
if(n <= 1){
return n;
}else{
return fibonacci(n-2) + fibonacci(n-1);
}
}
}
Java. 자료형 long을 사용했습니다^^
package h_Fibonacci1;
import java.util.Scanner;
public class Secret {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
long input=in.nextLong();
long a=0l, b=1l, temp=0l;
do{
System.out.print(a+" ");
temp=a;
a+=b;
b=temp;
}while(a<=input);
}
}
def seq(n):
s_seq="0 1"
prev,cur=0,1
next=0
while 1:
next = prev + cur
if next > int(n): break;
s_seq += " "+str(next)
prev, cur = cur, next
print(s_seq)
if __name__ == "__main__":
n = input()
seq(n)
Using python
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
def fibo(n):
a, b= 0, 1
#print "0 ",
while b<=n:
print "%d " %b,
a,b = b,a+b
try:
fibo(int(sys.argv[1]))
except:
print "Using : python %s number" %sys.argv[0]
# FibonacciNum
def fibonacciNum(n):
fibList = [0, 1]
i = 2
while n >= fibList[i-2] + fibList[i-1]:
fibList.append(fibList[i-2] + fibList[i-1])
i += 1
return fibList
print(fibonacciNum(13))
a = [];
a.append(0)
a.append(1)
Num = 0
while(Num <= 2 ):
Num = int(input ("Input N(N>2)"))
for i in range(2, Num):
a.append(a[i-2]+a[i-1])
print (a[i], end=' ')
#include <stdio.h>
int main(int argc, const char * argv[]) {
int i=0, j=1, tmp;
int n;
scanf("%d", &n);
printf("%d ", i);
while(j<=n){
printf("%d ", j);
tmp = j;
j = i + j;
i = tmp;
}
return 0;
}
C로 풀었습니다. 재귀 호출을 이용해서 풀었습니다~
int Fibo(int);
int main()
{
int num, i;
printf("input : ");
scanf_s("%d", &num);
for(i=1; i<=num; i++)
printf("%d ", Fibo(i));
return 0;
}
int Fibo(int num)
{
if(num==1 || num==0)
return 0;
else if(num==2)
return 1;
else
return Fibo(num-2)+Fibo(num-1);
}
python
#461.py
def pibo(n):
if n== 0 or n==1:
return 1
else:
return pibo(n-1)+pibo(n-2)
for i in range(int(raw_input())):
print "%d " %pibo(i),
Python 2
n = int(raw_input("Input integer: "))
first = 0
second = 1
f = first + second
print first, second, f,
while f < n:
first = second
second = f
f = first + second
print f,
#include <iostream>
using namespace std;
int main()
{
int n1=0,n2=1,count,i=1;
cout << "n : ";
cin >> count;
if (count == 1 || count ==2) {
count == 1 ? cout << i << " 번째 값 : " << n1 << endl : cout << i+1 << " 번째 값 : " << n2 << endl;
}
else {
do {
i++;
n2 += n1;
n1 = n2-n1;
cout << i+1 << " 번째 값 : " << n2 << endl;
} while (i<count-1);
}
}
int fib(int n)
{
if(n <= 1)
return n;
else
return fib(n-1) + fib(n-2)
}
int main()
{
int n;
cin >> n;
for(int i=0; i<=n; i++)
cout << fib(i) << "," ;
cout << endl;
}
C#으로 작성했습니다.
public string FindFibonacci(int n)
{
var first = (ulong) 1;
var second = (ulong) 2;
var output = first + " " + second;
for (int i = 2; i <= n; i++)
{
var temp = first;
first = second;
second += temp;
output += " " + second;
}
return output;
}
#include <stdio.h>
int main(){
int a,b[99999],i,j,sum=1,sam=1;
scanf("%d",&a);
b[1]=1;
b[2]=1;
for(i=3;i<=40;i++)
{
b[i]=b[i-1]+b[i-2];
}
for(i=1;i<=a;i++)
{
if(i==a)
{
printf("%d ",b[i]);
}
else
{
printf("%d, ",b[i]);
}
}
}
using java
public class Main {
public static void main(String[] args) {
int fiboArr[] = {0, 1};
Scanner keyboard = new Scanner(System.in);
int n;
n = keyboard.nextInt();
while(true){
if (fiboArr[0] >= n)
break;
System.out.println(fiboArr[0]);
int temp = fiboArr[1];
fiboArr[1] = fiboArr[1] + fiboArr[0];
fiboArr[0] = temp;
}
}
}
static void Main(string[] args)
{
string input = Console.ReadLine();
int num = int.Parse(input);
for (int i = 0; i < num; i++)
{
if (pibo(i) > num)
{
break;
}
else
{
Console.Write("{0} ", pibo(i));
}
}
Console.WriteLine();
}
static int pibo(int n)
{
if (n < 2)
{
return n;
}
else
{
return pibo(n - 1) + pibo(n - 2);
}
}
fibonacci = [0,1]
n = int(input("Enter a number"))
for i in range(n-2):
fibonacci.append(fibonacci[i]+fibonacci[i+1])
print(fibonacci)
#include <stdio.h>
int a;
int Fibo[1000]={0,1};
void Fibonacci(int i)
{
printf("%d ",Fibo[i]);
if(i>a)
return;
Fibo[i++]=Fibo[i]-Fibo[i-1]
Fibonacci(i);
}
int main(void)
{
scanf("%d",&a);
printf("%d",0);
Fibonacci(1);
return 0;
}
static void Main(string[] args)
{
int n = Console.Read();
int a = 1;
int b = 0;
int c = 0;
int result = 0;
for(int i = 1; i <= n; i++)
{
c = b;
b = a + b;
a = c;
Console.WriteLine(a + " ");
}
}
static void exce69()
{
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int a = 0, b = 1;
if (n == 0)
System.out.println(0);
else if (n == 1)
System.out.println(1);
else
{
for (int i = 0; i < n - 2; i++)
{
if (a >= b)
b += a;
else
a += b;
}
if (a > b)
System.out.println(a);
else
System.out.println(b);
}
}
static void Main(string[] args)
{
int n = int.Parse(Console.ReadLine());
int a = 0;
int b = 1;
int result = 0;
while(n >= b)
{
Console.WriteLine(b);
int temp = b;
b = a + b;
a = temp;
}
}
#include "stdafx.h"
#define MAX_NUMBER 100
int _tmain(int argc, _TCHAR* argv[])
{
int n; int fibo[MAX_NUMBER];
scanf("%d",&n);
for(int i=0; ;i++){
if(i==0 || i==1){
fibo[i]=i;
if(fibo[i]>n) break;
printf("%d ",fibo[i]);
}
else{
fibo[i]=fibo[i-1]+fibo[i-2];
if(fibo[i]>n) break;
printf("%d ",fibo[i]);
}
}
return 0;
}
n이하까지만 출력하고 멈추기가어렵네요ㅡㅡ생각보다 ㅎ 언어는 C언어입니다
파이썬입니다.
def fibo(n):
lst = [0, 1] # 초기값 설정
index = 1 # 인덱스는 항상 리스트의 끝을 가리킴
while lst[index] <= int(n): # 마지막 원소가 n 이하이면
lst.append(lst[index] + lst[index - 1]) # 더해서 삽입
index += 1
return lst[:-1] # 마지막 원소를 제외한 리스트 리턴
n = input()
print(fibo(n))
파이썬 2.7
def fib(n):
result = []
a, b = 0, 1
while True:
result.append(a)
a, b = b, a + b
if b >= n: # 찾은 피보나치가 인수값보다 크면 while 문을 빠져나온다.
break
return result
fibo_list = fib(150) # fibo함수의 인수값보다 작은 수의 피보나치 수열을 찾음
for i in fibo_list:
print i,
결과:
0 1 1 2 3 5 8 13 21 34 55 89
stopN=input('enter n: ')
res=[0]
nextN=1
while(stopN>=nextN):
res.append(nextN)
nextN=sum(res[-1:-3:-1])
print res
Ruby
n = 100000
fib = ->x{ x<2 ? x:fib[x-2]+fib[x-1] }
p (0..Float::INFINITY).lazy.map(&fib).take_while{|e|e<n}.force
# output
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025]
Haskell
let fibs = 0 : 1 : zipWith (+) fibs (tail fibs)
takeWhile (<100000) fibs
# output
[0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368,75025]
우선 0,1이 저장된 리스트를 만든 후,for문을 돌려서 마지막 두 숫자의 합이 입력할 정수의 값을 넘지않도록 break를 주었습니다.
def fibo(input_n):
a=[0,1]
total =0
for i in range(1,input_n+1):
total = a[i-1]+a[i]
if total>input_n:
break
a.append(total)
return a
#coding: CP949
n=int(input('정수를 입력하라:'))
if n == 0:
print([0])
elif n == 1:
print([0,1])
print([0,1,1])
result=[0,1,1]
end=result[len(result)-1]
j=3
while end < n:
result.append(result[j-2]+result[j-1])
j+=1
end=result[len(result)-1]
if end>n:
result.pop(len(result)-1)
print(result)
elif end==n:
print(result)
파이썬 3.3
하스켈입니다.
fibonacci n = let fibo x y = x:fibo y (x+y) in print . take n $ fibo 0 1
main = do
l <- getLine
let n = read l :: Int
fibonacci n
python 3.5
def fibonacci(number):
a = 0
b = 1
while b<=number:
a = b
b = a+b
return a
print(fibonacci(20))
파이썬3.4입니다.
n = int(input())
li = [0, 1]
while n >= (li[-1] + li[-2]):
li.append(li[-1] + li[-2])
print(li)
이게 맞을려나..
public int fibonacci(int n) {
if(n == 0 || n==1)
return n;
else
return fibonacci(n-1) + fibonacci(n-2);
}
public int getFibonacci(int input){
int result = 0, i = 0 ;
result = fibonacci(i);
while(result < input){
i++;
result = fibonacci(i);
System.out.print(result + " ");
}
System.out.println();
return result;
}
#파이썬3.4.2
def pibo(n):
p = ['0','1']
for i in range(2,n+2):
p.append(str(int(p[i-2])+int(p[i-1])))
return ' '.join(p)
print(pibo(int(input())))
참고로 다음 프로그램을 피보나치 수열을 누적으로 구할 수 있는 py입니다.
# 용량 주의
with open('fibonachi.txt','r') as ff:
pibo = ff.read()
pibo = pibo.split('\n')
def f(n):
if (n-1) in range(len(pibo)):
return int(pibo[n-1])
else:
return f(n-1) + f(n-2)
n = len(pibo)
try:
print(n)
while True:
pibo.append('{}'.format(f(n+1)))
n += 1
if n % 1000 == 0:
print(n)
except:
print(n,f(n))
with open('fibonachi.txt','w') as f:
f.write('\n'.join(pibo))
파이썬 2.7입니다.
n = 1
if n > 1:
a = 0
b = 1
c = 0
result = "0"
while 1:
if a+b > n:
break
result += ", %s" %(b)
c = a
a = b
b = a+c
elif n == 1:
result = "0, 1"
elif n == 0:
result = "0"
print result
#include <iostream> #include <cstdlib> #include <cstdio> #include <algorithm> using namespace std; #define MAXN 45 // input으로 들어올 n의 최댓값이 얼마인지 모르므로 long long dp[MAXN]; int main(){ int n; scanf("%d",&n); dp[1] = 0,dp[2] = 1; for (int i = 3; i <= n; i++){ dp[i] = dp[i-1]+dp[i-2]; } for (int i = 1; i <= n; i++){ printf("%lld ",dp[i]); } printf("\n"); return 0; }
우선 문제에서 n의 범위가 주어지지 않았으므로 적당한 크기의 n이라고 생각하겠습니다.
만약 n의 값이 상당히 크다면 int overflow가 일어날 수 있으므로 C++는 string 객체를 이용해서 big int addition을 구현할 필요가 있습니다.
그리고 제 코드는 시간복잡도 O(n) 인 다이나믹 프로그래밍을 이용한 코드인데 만약 n의 값이 굉장히 크다면 ( > 10^8) 피보나치 수를 구하는데 시간이 굉장히 오래 걸릴것입니다.
package main
import "fmt"
func Pibonacci() func() int {
now, next := 0, 1
return func() int {
now, next = next, now + next
return now
}
}
func main() {
var num int
fmt.Print("Input number: ")
fmt.Scanf("%d", &num)
gen := Pibonacci()
sep := ""
for {
v := gen()
if v > num {
break
}
fmt.Print(sep, v)
sep = ", "
}
}
def f():
a, b = 0, 1
yield a; yield b
while 1:
a, b = b, a + b
yield b
def g(n):
result = []; gen = f()
while 1:
temp = next(gen)
if temp <= n:
result.append(temp)
else: break
return result
while __name__ == '__main__':
print('\n'.join(str(x) for x in g(int(input('>>>')))))
파이썬 3.5.1
int main(void) { int num1 = 0, num2 = 1, num3 = 0, i = 0, n = 0;
printf("피보나치 수열을 구할때 어느 숫자 이하까지 구하고 싶은가?");
scanf("%d", &n);
while(1)
{
if(n < 0)
{
printf("음수인 피보나치 수가 없습니다.");
break;
}
else if(n==0)
{
printf("%d입니다. \n ", 0);
break;
}
else if(n==1)
{
printf("%d 입니다. \n ", 1);
break;
}
while(1)
{
if(n - num1 + 1 <= num3)
break;
else
{
num3 = num1+num2;
printf("%d\n", num3);
num1 = num2, num2 = num3;
}
i++;
}
break;
}
return 0;
}
전승빈님 코드 약간 수정햇습니다.
def fibo(first, second, limit):
nums = [first, second]
total = 0
third = 0
while first+second <= limit:
third = first +second
nums.append(third)
first = second
second = third
total += third
print(nums)
return nums, total
result = fibo(0, 1, 4000000)
print("numbers are... "+str(result[0])+"\nAnd Total number is .... "+str(result[1]))
늅늅입니다. 자바로 풀어봤습니다.
public static int maxNum = 5000;
public static int result = 0;
public static int arrayIndex = 0;
public static ArrayList<Integer> numbers;
public static void main(String args[])
{
numbers = new ArrayList<Integer>();
numbers.clear();
CalPibonachi(maxNum);
}
public static void CalPibonachi(int maxNum)
{
if(numbers.size() > 0)
{
while(true)
{
result = numbers.get(arrayIndex) + numbers.get(arrayIndex+1);
if(result > maxNum)
break;
numbers.add(result);
arrayIndex++;
}
Result();
}
else
{
numbers.add(result);
result += 1;
numbers.add(result);
CalPibonachi(maxNum);
}
}
public static void Result()
{
for (Integer number : numbers)
{
System.out.print(String.valueOf(number) + " ");
}
}
결과 : 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181
class pibo{
int a=0, b=1;
int fin=10;
int sum = a+b;
pibo(){
System.out.print(a+" "+b+" ");
for(int i = 0; i<fin ; i++){
System.out.print(sum+" ");
a=b;
b=sum;
sum=a+b;
}
}
}
public class lv2_11 {
public static void main(String[] args) {
pibo p = new pibo();
}
}
#def_name = limit_fibonacci, input = integer to express where the limitation is, output = fibonacci, type of result : a series of numbers
def limit_fibonacci(number):
result = [0,1]
while max(result) <= number:
if result[len(result)-2]+result[len(result)-1] <= number:
result.append(result[len(result)-2]+result[len(result)-1])
else:
return result
print limit_fibonacci(15) # result : [0, 1, 1, 2, 3, 5, 8, 13]
print limit_fibonacci(100) # result : [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Sequence {
public static void main(String[] args) {
String input= "";
try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
input = br.readLine();
} catch (IOException e) {
e.printStackTrace();
}
int number1 = 0;
int number2 = 0;
if(Integer.parseInt(input) != 0){
while(number1 <= Integer.parseInt(input)){
if(number1 == 0){
System.out.print(number1 + " ");
number1 ++;
System.out.print(number1 + " ");
}else{
int num = number1;
number1 = number1 + number2;
if(!(number1 >Integer.parseInt(input))){
System.out.print(number1 + " ");
number2 = num;
}
}
}
}else{
System.out.println(input);
}
}
}
int fib(int n) {
return fib_(0, 1, n);
}
int fib_(int a, int b, int n) {
while (b <= n) {
b = b + a;
a = b - a;
}
// now b is the first value > n
// so a is the last value <= n
return a;
}
int fibo = 0;
int tg = 1000;
List<int> array = new List<int>() { 0, 1 };
int fibopos = 1;
while(fibo < tg) {
fibo = array[fibopos - 1] + array[fibopos];
array.Add(fibo);
fibopos = array.Count - 1;
};
foreach (int v in array.Where(k => k < tg)) Console.WriteLine(v);
def fibonacci(num):
if num < 0:
return []
n1 = 0
n2 = 0
while n1 + n2 <= num:
yield n1 + n2
n1, n2 = n2, n1 + n2
if n2 == 0:
n1 = 1
def print_fibonacci(num):
print(', '.join(map(str, fibonacci(num))))
print_fibonacci(13)
Python 3.5.2에서 작성하였습니다.
def fibonachi(limit, n = 0, nums = [0]):
if nums[n] < limit:
if n == 0 :
nums.append(1)
else:
nums.append(nums[n] + nums[n-1])
fibonachi(limit, n+1, nums)
return nums
print(fibonachi(limit=100))
재귀로 풀어보려고 했는데 이상하게 됐네요..
def fib(n):
if n == 0: return 0
if n == 1: return 1
return fib(n-2) + fib(n-1)
n = int(input())
for i in range(n):
print (fib(i))
public class Lv2_02 {
public static void main(String[] args) {
Fibonacci f = new Fibonacci(10);
f.play();
}
}
class Fibonacci {
private int numLength = 0;
public Fibonacci(int num){
this.numLength = num;
}
void play (){
int [] arr = new int[numLength];
arr[0] = 0;
arr[1] = 1;
for (int i = 2; i < arr.length; i++) {
arr[i] = arr[i-2]+arr[i-1];
}
for (int i = 0; i < arr.length; i++) {
if (i==arr.length-1) {
System.out.print(arr[i]);
}else{
System.out.print(arr[i]+", ");
}
}
}
}
n,xy = int(input()),[0,1]
print('0, 1', end='')
while sum(xy) <= n:
print(',',sum(xy),end='')
xy = [xy[1],sum(xy)]
#### 2016.12.29 D-420 ####
#python 2.7.xx
def fibo(n):
return n if n < 2 else fibo(n-2) + fibo(n-1)
print map(fibo,range(5))
간결하게 아름답게!
import java.util.Scanner;
public class pivo {
public static int _pivo(int i){
if(i<=1)
return i;
else{
return _pivo(i-1)+_pivo(i-2);
}
}
public static void main(String[] args) {
int input,i=0;
Scanner scan = new Scanner(System.in);
input = scan.nextInt();
while(_pivo(i)<=input){
System.out.print(_pivo(i)+" ");
i++;
}
}
}
가장 정석정인 c재귀
#include <stdio.h>
int fibo(int val);
void main() {
int fib = 1;
int n = 7;
for(int i=0;i<n;i++) {
printf("%d ", fibo(i));
}
}
int fibo(int val) {
if(val < 2)
return val;
return fibo(val-2) + fibo(val-1);
}
public class Test461 {
static int limitNumber = 100;
public static void main(String[] args) {
pibo(0, 1);
}
public static void pibo(int s, int e){
if (s == 0) System.out.print(s);
if (e > limitNumber) {
return;
}
System.out.print(", " + e);
pibo(e, s + e);
}
}
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89
def pibonacci(n):
if n==0:
return [0]
result=[0,1]
for i in range(0,n+1):
if sum(result[-2:])<=n:
result+=[sum(result[-2:])]
return result
import java.util.Scanner;
import java.util.stream.IntStream;
public class Fibonacci {
public static void main(String[] args) {
IntStream.range(0, new Scanner(System.in).nextInt()).forEach(i -> System.out.println(fibonacci(i)));
}
private static int fibonacci(int n) {
if (n == 0) return 0;
if (n <= 1) return 1;
return fibonacci(n - 1) + fibonacci(n - 2);
}
}
파이썬 2.7
n = input('n=')
fib = [0, 1]
while(1):
tmp = fib[-2] + fib[-1]
if tmp > n:
break
fib.append(tmp)
print fib
n = int(input('자연수 N 을 입력하세요. \n N 이하까지의 피보나치 수열을 반환합니다.'))
x = [0, 1]
while x[-1] <= n:
print(x[-2])
x.append(x[-2] + x[-1])
print(x[-2])
list 형으로 수열의 1,2 번째 항을 정의한 후에 계속 추가해 나가는 방식입니다.
파이썬 3.5.3 연습용 코드입니다.
def pibo(n):
a=[0,1]
if n == 1:
print('0')
if n == 2:
print('1')
if n>2:
for x in range(3,n+1):
a.append(a[x-3]+a[x-2])
print(a)
def fibonacci(n):
result = [0]
while result[-1] < n:
result.append(max(1,sum(result[-2:])))
return result
print(fibonacci(13))
#include <iostream>
using namespace std;
void Fibo(int n);
int main()
{
int n;
cin >> n;
Fibo(n);
return 0;
}
void Fibo(int n)
{
int a1, a2, a3;
a1=0, a2=1, a3 = 0;
cout << a1 << " " << a2 << " ";
while(1)
{
a3 = a1 + a2;
if(a3 > n)
break;
cout << a3 << " ";
a1 = a2;
a2 = a3;
}
}
def fibo(n):
fibo=[0,1]
result=[]
for i in range(n):
fibo.append(fibo[i]+fibo[i+1])#피보나치수열
for i in fibo:#n이상의 자연수 없애기..
if i>n:
result.append(i)
for i in result:
fibo.remove(i)
return fibo
print(fibo(6))
print(fibo(10))
print(fibo(200))
print(fibo(50))
package codingdojang;
public class P2 {
int fibonach(int n) {
if (n <= 1)
return n;
else
return fibonach(n - 1) + fibonach(n - 2);
}
public static void main(String[] args) {
}
}
메소드만 구현해봤습니다.
def fibo(n):
a, b = 0, 1
while n > 0:
a, b = b, a + b
n -= 1
return a
lst=[0]
def new_lst(n):
for i in range(1,n+1):
lst.append(fibo(i))
n_lst=[]
for i in range(n):
if lst[i]<=n:
n_lst.append(lst[i])
return n_lst
a=int(input("number는?"))
b=new_lst(a)
print(b)
def fibo(n):
a,b=0,1
i=0
while i<n:
a,b=b,a+b
i+=1
return b
n=int(input("num은?"))
lst=[0,1]
for i in range(1, n+1):
if fibo(i)<=n:
lst.append(fibo(i))
print(lst)
Python 3.6 출력형태를 지정하시지 않았기에 그냥 리스트 출력합니다. index 의 뒤에 두개를 계속 더해가며 비교하면 됩니다.
def fibonacci(n):
f = [0,1]
while f[-2]+f[-1] < n:
f.append(f[-2]+f[-1])
return print(f)
>>> range = int(input("Max? "))
Max? 1000
>>> fibonacci(range)
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987]
javascript
자바스크립트의 클로저를 사용하여 피보나치 수열을 캐싱하였습니다.
캐싱하지 않았을 경우 아래 코드 주석처럼 호출횟수가 무지막지하게 늘어납니다.
var callcount = 0;
var fibonacci = (function(n) {
var cache = [0, 1];
// cache 사용
// fibocacci 1~30 까지 호출시 86회 호출됨
return function fib(i) {
callcount++;
if (typeof cache[i - 1] === "undefined") {
cache[i - 1] = fib(i - 1) + fib(i - 2)
}
return cache[i - 1];
}
// cache 미사용
// fibocacci 1~30 까지 호출시 4356586회 호출됨
//
// return function fib(i) {
// callcount++;
//
// if (i == 1) return 0;
// if (i == 2) return 1;
// return fib(i - 1) + fib(i - 2);
// }
})();
var print = function(n) {
for (let i = 1; i <= n; i++) {
console.log(`${i} : ${fibonacci(i)}`);
}
};
print(30);
console.log(callcount)
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
System.out.println("몇번째 피보나치 수열까지 볼려구요?");
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int sum1 = 0,sum2 = 1,sum3 = 0;
for (int i = 0; i < n; i++) {
sum3 = sum1 + sum2;
sum1 = sum2;
sum2 = sum3;
System.out.printf("%d, ", sum1);
}
sc.close();
}
}
자바....
파이썬으로 작성하였습니다.
num = int(input("숫자를 넣어 주세요 : "))
pit = [0, 1]
def pitvot(num):
sum = 0
total = 0
for i in range(num+1):
sum = pit[i] + pit[i+1]
if sum <= num:
pit.append(sum)
else :
break
print(pit)
for j in pit:
if j % 2 ==0:
total += j
print("짝수의 합은 %d: "%total)
pitvot(num)
```
Python 3로 풀었습니다.
def solve(max_val):
def fib(limit):
a = [0,1]
while a[0] < limit:
yield a[0]
a.reverse()
a[1] += a[0]
for x in fib(max_val + 1):
print(x)
package java_tutorial;
import java.util.Scanner;
public class Pibonacci {
public static void main(String[] args) {
int pibo_a = 0;
int pibo_b = 1;
Scanner sc = new Scanner(System.in);
System.out.print("Until? : ");
int target_Num = sc.nextInt();
System.out.print(pibo_a + " " + pibo_b + " ");
while(pibo_b+pibo_a <= target_Num)
{
if(pibo_a > pibo_b)
{
pibo_b = pibo_a + pibo_b;
System.out.print(pibo_b + " ");
}
else
{
pibo_a = pibo_a + pibo_b;
System.out.print(pibo_a + " ");
}
}
}
}
import java.util.*;
public class Fibonacci {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int f1=0, f2=1, f3=1;
if(n>=0) System.out.println(f1);
if(n>=1) System.out.println(f2);
while(f3 <= n) {
System.out.println(f3);
f1 = f2;
f2 = f3;
f3 = f1+f2;
}
}
}
Python으로 작성했습니다.
def fibonacci(num):
temp = [0, 1]
for idx in range(num):
temp.append(temp[idx] + temp[idx + 1])
return(temp)
R로 작성했습니다.
fibonacci <- function(num){
temp <- c(0, 1)
for(i in 1:num){
temp[i + 2] <- temp[i] + temp[i + 1]
}
return(temp)
}
fibonacci(10)
import java.util.Scanner;
public class test {
public static void main(String[] args) {
Scanner s=new Scanner(System.in);
int num=s.nextInt();
int x=0,y=1;
int z=1;
while(z<num){
System.out.print(z+" ");
z=x+y;
x=y;
y=z;
}
}
}
C
#include <stdio.h>
int main(int argc,char* argv[])
{
int start1 = 0;
int start2 = 1;
int tmp = 0;
printf("%d %d ",start1,start2);
for(int i=0;i>=0;i++)
{
if(i==0)
{
tmp = start1 + start2;
continue;
}
else
{
start1 = tmp;
tmp = tmp + start2;
start2 = start1;
}
if(tmp>atoi(argv[1]))
return 0;
printf("%d ",tmp);
}
return 0;
}
뭐 저보다 좋은 코드가 많아서...
def fibonacci(n):
result=[0,1]
if n<= 1:
return result[n]
else:
for i in range(n-1):
result.append(result[i+1]+result[i])
return result[-1]
def show(n):
for i in range(n):
print(fibonacci(i))
프밍 배운지 얼마 안 된 완전 초짜라 정말 기본적인 것들만 썼습니다. (아직 리스트도 안 배워서ㅎㅎ) 다른 분들 올리신 거 보고 많이 배우고 갑니다! 파이썬이에요.
def fib(num_1, num_2):
fibonacci = "0" + " " + "1"
i = 0
N = int(input("till when? "))
while i < N:
num_3 = num_2
num_2 = num_1 + num_2
num_1 = num_3
i += 1
fibonacci = fibonacci + " " + str(num_2)
return fibonacci
print(fib(0,1))
다른 분들 리스트 쓰신 거 보고 막 리스트 배워서 새로 또 올려보아요! 여전히 길지만...
fib = [0,1]
def fibonacci(list,num):
i = 0
while i < num:
new_list = [int(list[i]) + int(list[i+1])]
list = list + new_list
i += 1
return list
num = int(input("till when? "))
print(fibonacci(fib,num))
def fibo(i):
if i==0 :return 0
if i==1 :return 1
return fibo(i-2)+ fibo(i-1)
a=input("숫자를 입력하시오.")
for i in range(0,int(a)):
print(fibo(i))
user_input=input('사용자 입력:')
user_input=int(user_input)
first_num=0
second_num=1
pibo_list=[]
sum=0
while sum<user_input:
sum=first_num + second_num
if sum<user_input:
first_num=second_num
second_num=sum
pibo_list.append(sum)
if sum>user_input:
break
pibo_list.insert(0,0)
pibo_list.insert(1,1)
print(pibo_list)
def getList(num):
result = [0,1]
while result[-1]<num:
result.append(sum(result[-2:]))
print(result)
getList(14)
public class Example69 {
public static void main(String[] args) {
Example69 ex = new Example69();
//ex.Fibonacci(13);
int input = 10;
for (int i = 0; i < input; i++) {
System.out.print(ex.Fibonacci(i) + " ");
}
}
private int Fibonacci(int n) {
if (n <= 1)
return n;
else
return Fibonacci(n - 2) + Fibonacci(n - 1);
}
}
# python 3.6
def fibo(n):
x = 0
y = 1
ret = list()
while x <= n:
ret.append(x)
x, y = y, x + y
return ret
inp = int(input())
print(fibo(inp))
#include <iostream>
#include <vector>
#include <stack>
#include <math.h>
#include <Windows.h>
using namespace std;
int fibo(int num) {
if (num == 1)
return 0;
else if (num == 2)
return 1;
else
return fibo(num - 1) + fibo(num - 2);
}
int main() {
int num = 0;
cout << "type number : ";
cin >> num;
int count = 1;
while (1) {
int fibo_num = fibo(count);
if (fibo_num > num)
break;
else {
cout << fibo_num << endl;
}
count++;
}
return 0;
}
package codingdojang;
import java.util.Scanner;
public class ex69 {
public static int fib(int x) {
if(x<=1) {
return x;
}
return fib(x-1)+fib(x-2);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int n = sc.nextInt(); sc.nextLine();
int i=0;
while(fib(i)<=n) {
i++;
}
for(int j=0; j<i; j++) {
System.out.print(fib(j)+" ");
}
}
}
import java.util.Scanner;
import java.util.Arrays;
public class GetPibonacci {
static Scanner scan = new Scanner(System.in);
static int firstNum = 0; static int secondNum = 1; static int slot = 2;
public static void main(String[] args) {
System.out.print("N 이하의 피보나치 수열을 구하기 위한 N값을 입력하세요 > ");
int n = scan.nextInt(); int[] pibonacci = new int[n];
pibonacci[0] = 0; pibonacci[1] = 1;
while(pibonacci[firstNum] +pibonacci[secondNum] <= n) {
pibonacci[slot] = (pibonacci[firstNum] +pibonacci[secondNum]);
firstNum++; secondNum++; slot++;
}
for(int a = 0; a < slot; a++) {
System.out.print(pibonacci[a] +" ");
}
}
}
def Fibonacci(a0, a1, maxi):
if not maxi: return([0])
elif maxi<0: return([])
result=[a0, a1]
def inner(a, b, n, l):
tmp=a+b
if tmp>n: return(l)
else:
l.append(tmp)
return(inner(b, tmp, n, l))
return(inner(a0, a1, maxi, result))
num=int(input())
print(Fibonacci(0,1,num))
def fibo(lst):
lst.append(lst[-2] + lst[-1])
return lst
result=[0,1]
for i in range(5) :
result = fibo(result)
print(result)
Python
def pivo(n):
result=[]
for i in range(n):
if i <=1:
result.append(i)
else:
a=result[i-2]+result[i-1]
if a>=n:break ##n이하 까지의 피보나치 수열
result.append(a)
return result
pivo(7)
public class Solution {
public long solution(int n) {
if (n <= 1) {
return n;
}
int value = 0;
int[] values = new int[]{0, 1};
for (int i = 2; i <= n; i++) {
value = values[0] + values[1];
values[0] = values[1];
values[1] = value;
}
return value;
}
}
l = int(input("숫자를 입력하세요"))-1
d = [0,1]
for c in range(0, l):
x = d[c] + d[c+1]
d.append(x)
print(d)
파이썬 3.6
def pibonacci(n):
result = []
t,p = 0,0
while t <= n:
if t < 2:
result.append(t)
t += 1
elif t >= 2:
t = result[p] + result[p+1]
if t <= n: result.append(t)
if t == 1: t += 2
p += 1
print(result)
if __name__ == "__main__":
n = int(input("정수 n을 입력하세요: "))
pibonacci(n)
*결과값
정수 n을 입력하세요: 10
[0, 1, 1, 2, 3, 5, 8]
정수 n을 입력하세요: 100
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
정수 n을 입력하세요: 1000
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987]
fib<-function(x){
temp<-NULL
result<-NULL
if(x>0){
temp[1]<-1
result[1]<-0
for(i in 2:x){
result[i]<-temp[i-1]
temp[i]<-result[i-1]+temp[i-1]
}
result[length(result)+1]<-temp[length(temp)]
print(result)
}
}
a=int(input("최대숫자: "))
n=0
def fibo(n):
if n==0:
return 0
elif n==1:
return 1
else:
return fibo(n-1)+fibo(n-2)
while a>=fibo(n):
print(fibo(n))
n=n+1
# 파이썬
input1 = int(input("입력 이하의 피보나치 수열 출력: "))
def fibonacci(i):
a, b = 1, 0
while 1:
print(b, end=' ')
a, b = b, a+b
if b > i:
break
fibonacci(input1)
def fibonacci(n):
a = [0, 1]
while a[-1] + a[-2] <= n:
a.append(a[-1] + a[-2])
return a
print(fibonacci(int(input())))
N=int(input("어디까지 구할지 입력하세요:"))
num_list=[0,1,1]
a=0
b=1
c=1
flag=1
while flag:
a=b
b=c
c=a+b
if c<=N:
num_list.append(c)
else:
flag=0
print(num_list)
def pinum(n):
numlist = [0, 1]
while numlist[-1] <= n:
numlist.append(numlist[-1] + numlist[-2])
del numlist[-1]
return numlist
import java.util.Scanner;
public class Plus{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("몇 이하의 피보나치 수열을 출력할까요?");
int input = sc.nextInt();
int a,b,c,i;
a = 0 ;
b = 1 ;
c = a + b;
System.out.print(a + ", " + b);
while(c <= input){
System.out.print(", " + c);
a = b;
b = c;
c = a + b;
}
}
}
def Fibo(num) :
prog = [0,1]
i = 0
while prog[i] + prog[i+1] < num :
prog.append(prog[i] + prog[i+1])
i += 1
print(prog)
// 자바입니다
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
long n = sc.nextInt();
long f0 = 0;
long f1 = 1;
long f = 0;
for (long i=0; i<n; i++) {
System.out.println(f);
f = f1 + f0;
f1 = f0;
f0 = f;
}
}
user_input = int(input())
def fib(num): # num 이하까지의 피보나치를 출력
lst = [0,1]
first = 0
second = 1
while True:
first = first + second
second = first + second
lst.append(first)
lst.append(second)
if num in lst:
break
idx = lst.index(num)
return lst[:idx+1]
print(fib(user_input))
def fib(n, x, y):
a = [x, y]
while True:
x += y
if x > n: break
a.append(x)
y += x
if y > n: break
a.append(y)
return a
#include<iostream>
#include<vector>
using namespace std;
int fin(int input)
{
int number = 0, n = 1;
int result = 0;
vector<int> v;
v.push_back(number); v.push_back(n);
while (result<input)
{
result = v[n - 1] + v[n];
v.push_back(result);
n++;
}
return v[n - 1];
}
int main()
{
int input;
cout << "정수를 입력하시오>>";
cin >> input;
cout<<fin(input)<<endl;
}
Python
d = [0, 1]
idx = 2
n = 100
while d[idx-2]+d[idx-1] < n:
d.append(d[idx-2]+d[idx-1])
idx += 1
print(d)
package test;
import java.util.Scanner;
public class test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int a = 0, b = 1;
do {
System.out.print(a + " ");
int temp = a;
a += b;
b = temp;
} while (a <= n);
}
}
import java.util.ArrayList;
public class Fibonacci {
public static ArrayList<Integer> getFibonacci(int n) {
ArrayList<Integer> fList = new ArrayList<Integer>();
if (n == 0) { // input이 0일 때
fList.add(0);
}else { // input이 1 이상의 자연수일 때
fList.add(0);
fList.add(1);
int num = 0;
for (int i = 2; ; i++) {
num = fList.get(i-2) + fList.get(i-1);
if (num <= n) {
fList.add(num);
}
else {
break;
}
}
}
return fList;
}
public static void main(String[] args) {
int n = 100;
ArrayList<Integer> result = Fibonacci.getFibonacci(n);
System.out.println(result);
}
}
a, b = b, a+b는 알고는 있었는데 파이썬은 이것도 되겠네요;; 알고리즘 고민 너무 안하게 하는 부정적인 측면이;;
def fibo(n, a = [0, 1]):
while(n > len(a)): a.append(a[-2] + a[-1])
return a
print(fibo(10))
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main() {
int a = 0, b = 1;
int c;
int input_num;
printf("피포나치 수열 구하기 첫번째항의값은 0 이고 두번째 항의 값은1입니다. \n");
printf("정수 n을 입력하세요 : ");
do
{
scanf("%d", &input_num);
if(input_num>0)
break;
else
printf("음수를 입력하셨습니다. 다시입력해주세요 : ");
}while(1);
printf("%d %d ", a ,b);
while(1)
{
c = a+b;
printf("%d ", c);
a = b;
b = c;
if(c>=input_num)
break;
}
}
a=[]
a.append(0)
a.append(1)
n=input()
while a[len(a)-1]<int(n):
a.append(a[-1]+a[-2])
b=list(map(str,a[0:-1]))
b=",".join(b)
print(b)
import java.util.Scanner;
class Pibonachi {
public static void main(String[] args) {
int a = 0; //f0 , 초기값 0 , 후 fn역할
int b = 1; //f1 ,초기값 1, 후 전값을 저장
int c = 0; //계산용 공간
System.out.print("정수값 입력 : ");
Scanner input = new Scanner(System.in);
int num = input.nextInt();
for (int i=1;i<=num;i++) {
System.out.print(a+" "); // 수열값 출력
c = b; //C에 B(전 값)을 저장
b = a; //아래식을 계산하기 전에 A(전 값)을 B에 저장
a = a + c; //전값과 자기값을 더함
if(a>num) { //수열값이 100을 넘으면
System.out.println();
break; //반복문 종료
}
}
}
}
fibo = [0,1]
def fibo_cal(n):
i = 1
value = 0
while True:
i = i + 1
value = fibo[i-2]+fibo[i-1]
if value <= n:
fibo.append(value)
else:
break
fibo_cal(30)
print(fibo)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int num = scan.nextInt();
for(int i=1;i<=num;i++)
{
System.out.println(fibo(i));
}
}
public static int fibo(int n)
{
if(n<=1)
{
return n;
}
else
{
return fibo(n-2)+fibo(n-1);
}
}
}
최소한 의 코드로 시도해 봅니다.
public class Stating {
public static void main(String args[]) {
int count = 3;
int[] i = {1,1};
for(int j = 0; j < count; j++) {
System.out.print(i[j % 2] + ",");
i[j % 2] += i[(j+1) % 2];
}
}
}
import java.util.Scanner;
public class KimSanghyeop
{
public static void main(String[] args)
{
Scanner sc =new Scanner(System.in);
System.out.print("숫자를 입력하세요.");
int n=sc.nextInt();
int a=0,b=1;
int c=a+b;
System.out.print(a+" "+b+" ");
while(c<=n)
{
System.out.print(c + " ");
a=b;
b=c;
c=a+b;
}
}
}
fibonacci <- function (n){
fn <- rep(NA)
fn[1:2] <- c(0, 1)
i <- 1
while (fn[i] <= n){
fn[i + 2] <- fn[i + 1] + fn[i]
i <- i + 1
}
return(head(fn, -2))
}
n=int(input('숫자입력: '))
a=0
result =[0,1]
while a < n:
result.append(result[-1]+result[-2])
a+=1
print(result)
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
ArrayList<Integer> arr = new ArrayList<>();
arr.add(0);
arr.add(1);
int n = scan.nextInt();
for (int i = 0; i < n; i++) {
arr.add(arr.get(i) + arr.get(i+1));
System.out.println(arr.get(i));
}
}
}
풀어봤는데 고칠점 지적해주시면 감사하겠습니다!!
fir = 0; sec =1
fibo_lis = []
in_int = int(input("피보나치 수를 몇 번째 항까지 구할까요? : "))
for rep in range(in_int):
fibo_lis.append(fir)
thi = fir + sec
fir, sec = sec, thi
print(fibo_lis)
%피보나치 수열
n=input('몇번째 항까지 출력할 것인가?');
a(1)=0;
a(2)=1;
for i=3:n
a(i)=a(i-1)+a(i-2);
if i==n
fprintf('%d번째까지의 피보나치의 수: %d\n',n);
disp(a);
break
end
end
fprintf('\n')
/*C로 작성*/
#include <stdio.h>
void main()
{
int Oddnum = 0, Evennum = 1, Maxnum ;
for (;;)
{
Maxnum = 0;
printf("입력한 수 이하까지의 피보나치 수열을 구합니다.\n");
scanf("%d", &Maxnum);
if (Maxnum < 0)
{
printf("값이 너무 작습니다");
continue;
}
else break;
}
for (;;)
{
printf("%d,", Oddnum);
Oddnum = Oddnum + Evennum;
if (Evennum > Maxnum) break;
printf("%d,", Evennum);
Evennum = Evennum + Oddnum;
if (Evennum > Maxnum && Oddnum > Maxnum) break;
}
printf("\b ");
}
def fib(n):
fibo = [0,1]
i = 0
while True:
if fibo[len(fibo)-1] > n:
fibo.pop()
break
else:
fibo.append(fibo[i]+fibo[i+1])
i += 1
return fibo
n = int(input())
print(fib(n))
function fib(n) {
if (n <= 1) {
return n;
} else {
return fib(n - 1) + fib(n - 2);
}
}
var tmp = '';
for(var i = 0; i < 10; i++){
tmp += fib(i) + " "
}
console.log(tmp);
namespace codingdojang__
{
class Program
{
static void Main(string[] args)
{
Fibonacci(10);
}
static void Fibonacci(int input)
{
List<int> fibonacci_list = new List<int> { 0, 1 };
for (int i = 0; i < input - 2; i++)
{
fibonacci_list.Add(fibonacci_list[i] + fibonacci_list[i + 1]);
}
Console.WriteLine(fibonacci_list[input - 1]);
}
}
}
while True:
number=int(input("Input a non-negative integer: " ))
if number==0: print([0])
elif number==1: print([0,1,1])
else:
fib=[0,1,1]
i=2
while True:
i+=1
t=fib[i-2]+fib[i-1]
if t<=number: fib.append(t)
else: break
print(fib)
재귀호출을 써서 만들었습니답
def fib(n):
if n == 0: return 0
if n == 1: return 1
return fib(n-2) + fib(n-1)
for i in range(10):
print(fib(i))
def main():
n=int(input())
print("="*30)
#피보나치수열
def fibo(n):
if n==1 or n==0 :
return n
return fibo(n-2)+fibo(n-1)
#출력
for i in range(n):
print(fibo(i))
def fibonacci(n):
if n == 0:
return 0
elif (n == 1) or (n == 2):
return 1
else:
return fibonacci(n-1) + fibonacci(n-2)
비쥬얼 스튜디오로 작성했습니다. 추가로 n 이하의 피보나치 수열의 합을 구하는 프로그램까지 작성해봤어요
#include <stdio.h>
void main() {
int x;
printf("x의 값 : ");
scanf("%d", &x);
int a = 0, b = 1;
int c = 1, sum = 0;
printf("x 이하까지의 피보나치 수열 : %d ", a);
while (c <= x)
{
printf(" %d ", c);
sum += c;
c = a + b;
a = b;
b = c;
}
printf("\nx 이하까지의 피보나치 수열의 합 : %d", sum);
}
def fibonacci(lst,n):
if lst[-1] > n:
return lst[:-1]
else:
lst.append(sum(lst[-2:]))
return fibonacci(lst[-2:],n)
fibonacci([0,1],15) [0, 1, 1, 2, 3, 5, 8, 13]
def fibo(num):
list=[0,1]
for i in range(2, num + 1):
if list[i - 1] + list[i - 2] <= num:
list.append(list[i - 1] + list[i - 2])
else:
break
print(list)
n = int(input('정수 n입력:'))
if n != 0:
lst=[0,1]
while lst[-1] + lst[-2] <= n:
lst.append(lst[-1] + lst[-2])
print(lst)
else:
print(0)
재귀를 사용하면 굉장히 큰 시간이 걸립니다 O(2^N) 까지는 아니더라도 한 함수에서 재귀호출을 2번 사용하므로 꽤나 큽니다. 메모이제이션을 사용하면 O(N)으로 줄일 수 있지만 여기선 단순 출력하는 문제이므로 3개짜리 배열로 !
#include <iostream>
using namespace std;
void fibo(int N)
{
int ans[3] = {0, 1, 1};
while(N > 1)
{
cout << ans[0] << ',';
ans[0] = ans[1];
ans[1] = ans[2];
ans[2] = ans[0] + ans[1];
N--;
}
cout <<ans[0];
}
int main()
{
int N;
scanf("%d", &N);
fibo(N);
return 0;
}
n=int(input());inp=[0,1];ans='0 1'
while 1:
if inp[len(inp)-2]+inp[len(inp)-1]>n:
break
ans+=' '+str(inp[len(inp)-2]+inp[len(inp)-1])
inp.append(inp[len(inp)-2]+inp[len(inp)-1])
print(ans)
기본 내장함수에 있는 join함수를 이용 해 보여 하였지만, 수열이 두자리수 이상이 될 경우, 어떻게 잘라야 할 지 애매해져서 그냥 리스트를 하나 선언 해 두고 출력하느것이 낫겠더군요. 물론 그냥 리스트만으로 해도 되겠지만은, 그냥 문자열로 하여 출력도 하여 보았읍니다. 그나저나 처음으로 난이도 투표를 하여 보았는데, 저의 한표로 난이도가 바뀌어 버렸군요. 미안합니다.^^;;
#include <stdio.h>
int number_i = 0;
int number_i_plus = 1;
int maximum;
int temporary;
void fibbonaci(int maximum){
while(number_i_plus < maximum)
{
temporary = number_i_plus;
number_i_plus = number_i + number_i_plus;
number_i = temporary;
printf("%d\n", number_i);
}
}
void main(){
scanf("%d",&maximum);
printf("%d\n",number_i);
fibbonaci(maximum);
}
#include <stdio.h>
int main()
{
int Max, num1=0, num2=1, num3=0;
printf("input ==>");
scanf("%d", &Max);
while (num3 <= Max)
{
printf("%d\n", num3);
num3 = num1 + num2;
num1 = num2, num2 = num3;
}
return 0;
}
c언어로 작성했슴다.
파이썬 3.7.2
n = int(input("원하는 정수 n의 값을 입력하세요\n> "))
result = [0, 1]
m = 1
while result[m-1]+result[m] <= n:
result.append(result[m-1]+result[m])
m += 1
print("n 이하의 피보나치 수열 :\n"+str(result)[1:len(str(result))-1])
python3.6
input_num = int(input('input num (int) : '))
x1, x2 = 0, 1
while x2 <= input_num:
print('%d, ' % x1, end='')
x1, x2 = x2, x1+x2
print(x1)
n = input(int('type number: ')) -> 인풋을 정수형으로 바꾸어 변수 n 에 저장한것입니다.
a = 0 {
b = 0 -- 변수를 만든것 입니다.
c = 1 }
for i in range(n): -> n 만큼 반복하기입니다.
c = a + b -> 변수 c 를 변수 a + b 로 하고
a = b -> 더하는 숫자들을 바꾸고
b = c -> b 도 바꿉니다.
if c < n: -> 변수 c 가 인풋 n 보다 크면 안되니까 조건문을 넣고
print(c) -> 만약 변수 c 가 n 보다 작으면 변수 c 를 프린트 하고
else: -> 아닐땐
break -> 이 반복문을 깨뜨려(나가) 더이상 피보나치 수열을 만들지 않습니다.
코딩 초보자의 풀이 입니당!
#피보나치
#n을 입력받아서 n이하의 피보나치 수열을 출력하기
n = int(input())
pibo = []
cnt = 0
while 1:
if cnt < 2:
pibo.append(cnt)
elif cnt >= 2:
pibo.append(pibo[cnt-2]+pibo[cnt-1])
if pibo[cnt] > n:
print(pibo[:cnt])
break
cnt+=1
#피보나치
#n을 입력받아서 n이하의 피보나치 수열을 출력하기
n = int(input())
pibo = []
cnt = 0
while 1:
if cnt < 2:
pibo.append(cnt)
elif cnt >= 2:
pibo.append(pibo[cnt-2]+pibo[cnt-1])
if pibo[cnt] > n:
print(pibo[:cnt])
break
cnt+=1
#include<stdio.h>
int main(void)
{
int i, input, a=0, b=1, c=a+b;
printf("100이하의 정수 중 하나를 입력하세요 : ");
scanf("%d",&input);
if(input>=0 && input<=100)
{
if(input==0)
printf("%d",a);
else
{
printf("%d %d ",a, b);
for(i=0; i < input; i++)
{
if(c<=input)
{
printf("%d ", c);
a=b;
b=c;
c=a+b;
}
}
}
}else
printf("잘못입력 했습니다.\n");
}
a=1
b=2
c=a+b
result = 0
while a<=4000000:
if a%2==0:
result+=a
a=b
b=c
c=a+b
print(result) #4613732
파이썬 3.7 사용.
def Fibonacci(n):
result=[0,1] #초기값.
while(True):
tmp=result[-1]+result[-2]
if tmp<n:
result.append(tmp)
else:
break
return result
if __name__ == '__main__':
while(True):
n=input('n을 입력하세요: ')
try:
n=int(n)
if n>0:
break
else:
print('입력 에러. 다시 입력하세요')
except:
print('입력 에러, 다시 입력하세요')
print(Fibonacci(n))
a = int(input("Write down a number : ")) # type: int
print("You typed {}.".format(a))
print("Let's pibonach this")
b = 1
for i in range(1, a+1):
b *= i
print("Result is {}".format(b))
maxnumber = 0
while maxnumber < 1:
maxnumber = int(input('1 이상인 정수를 입력해 주세요 : '))
fibo = [0, 1]
while (fibo[-2] + fibo[-1]) < maxnumber:
fibo.append(fibo[-2] + fibo[-1])
print(fibo)
inp = int(input())
array = [0, 1]
for i in range(1, inp - 1):
array.append(array[i-1] + array[i])
print(array)
package Project;
import java.util.Scanner;
public class PBNC {
public static void main(String[] args) {
Scanner n = new Scanner(System.in);
int num = n.nextInt();
System.out.print("0, ");//미리 0 출력
int a = 1;//첫번째 수
int b = 1;//두번째 수
int c;//세번째 수
for (int i = 0; i < num; i++) {
c = a + b;//첫번째와 두번째 를 더해서 세번째값에 넣음
System.out.print(a + ", ");//첫번째 일단 출력
a = b;//첫번째수를 이제 두번째 수로 바꾸어줌
b = c;//두번째수는 세번째 수가 됨
//반복
}
}
}
def pibo(n):
if n == 1:
return 0
elif n == 2:
return 1
else:
return pibo(n-2) + pibo(n-1)
print('정수입력: ', end = '')
a = int(input())
print(pibo(a))
public class Fibonacci {
static int[] calculated = new int[50]; // All elements are initialized to 0 by default
public static void main(String[] args) {
int n = 30;
for(int i=0; i<=n; i++) {
System.out.print(fibonacci(i)+" ");
}
}
private static int fibonacci(int n) {
if(n == 0)
return 0;
if(n == 1) {
return 1;
}
else if( n == 2)
return 1;
else {
if( calculated[n] != 0)
return calculated[n];
else return calculated[n]= fibonacci(n-2) + fibonacci(n-1);
}
}
}
def Fib(n):
if n==1: return 1
if n==2: return 1
return Fib(n-1)+Fib(n-2)
n=int(input('양의 정수:'))
for i in range(1,n+1):
print(Fib(i),end=' ')
int main()
{
int n;
int prev2Number = 0, prevNumber = 1, currentNumber;
cin >> n;
if (n >= 1) cout << prev2Number;
if (n >= 2) cout << ", " << prevNumber;
for (int i = 2; i < n; ++i)
{
currentNumber = prev2Number + prevNumber;
cout << ", " << currentNumber;
prev2Number = prevNumber;
prevNumber = currentNumber;
}
return 0;
}
def fibonachi(n): t = [0,1] while(True): t.append(t[-1]+t[-2]) if t[-1] > n: return t[:-1] break
print(fibonachi(13)) print(fibonachi(15))
def fibonachi(n):
t = [0,1]
while(True):
t.append(t[-1]+t[-2])
if t[-1] > n:
return t[:-1]
break
print(fibonachi(13))
print(fibonachi(15))
N = int(input('Enter int : '))
a = 0; b = 1
while a <= N and b <= N :
print(a, b, end = ' ')
a += b
b += a
temp=0
previous=0
current=1
i=1
while i<=20:
print(current)
temp=previous
previous=current
current=temp+previous
i=i+1
int n;
cin>>n;
void pivo(int n){
if(n==0) return 0;
if(n==1)return 1;
return pivo(n-1)+pivo(n-2);
}
cout<<pivo(n);`
n = int(input("숫자를 입력하세요:"))
result = [0,1]
temp = result[-1]+result[-2]
while temp <= n:
result.append(temp)
temp= result[-1]+result[-2]
print(result)
max_num = int(input("Input the number"))
a, b = 0, 1
print('%d,%d' % (a, b), end='')
while 1:
c = a + b
if(c >= max_num):
break
else:
print(',%d' %c, end='')
a = b
b = c
n= int(input("양의 정수를 입력하세요: "))
p_list = [0, 1]
if n == 1:
print('0')
elif n ==2:
print('0, 1')
elif n > 2:
t = 0
while t < n-2:
a = p_list[t]+p_list[t+1]
p_list.append(a)
t = t +1
print(p_list)
else:
print("양의 정수를 입력해주세요")
python
n = int(input())
def fib(index):
if index == 0:
return 0
if index == 1:
return 1
if index >= 2:
return fib(index-2) + fib(index-1)
seq = []
index = 0
while True:
s = fib(index)
if s > n:
break
seq.append(s)
index += 1
print(seq)
a = int(input('숫자 입력 : '))
x = list()
x.append(0)
x.append(1)
total = ''
for i in range(0,a):
if x[i]+x[i+1]>a:
break
x.append(x[i] + x[i+1])
for j in range(0,len(x)):
b = str(x[j])
total+=b
total+=', '
print(total)
def fibo(num):
a=0
b=1
result=0
listA=[0,1]
while(1):
result=a+b
if(result>num):
break
a=b
b=result
listA.append(result)
return listA
result=fibo(15)
print(result)
python 3.7
num = int(input())
def Fib(n):
if n==1 or n==2 : return 1
else: return Fib(n-1)+Fib(n-2)
print([Fib(i) for i in range(1, num+1)])
num=int(input("정수입력:"))
num1=0
num2=1
result=[num1,num2]
while num2<num or num1<num:
num3=num1+num2
num4=num2+num3
if num3<=num:
result.append(num3)
if num4<=num:
result.append(num4)
num1=num3
num2=num4
print(result)
newlist = [0, 1]
num = int(input("Enter number: "))
for k in range(3, num):
x = len(newlist)
y= newlist[x-1] + newlist[x-2]
newlist.insert(x, y)
print(newlist)
num = int(input())
I = [0, 1]
for x in range(0, num):
k = I[x] + I[x+1]
if k > num:
break
I.append(k)
print(I)
def fibonacci(n):
if n <= 1:
return n
else:
return fibonacci(n - 1) + fibonacci(n - 2)
for i in range(int(input('Enter a number: '))):
print(fibonacci(i), end = ' ')
# make list
fibonacci = [0, 1]
# input number what you want
a = int(input())
# algorithm
for i in range(2, a):
a = fibonacci[i-2] + fibonacci[i-1] # find last list's argument in fibonacci, a
fibonacci.append(a) # append a on fibonacci list
# output
print(fibonacci)
N = int(input())
def fibonacci(n):
if n == 1:
return 0
elif n == 2:
return 1
else:
return fibonacci(n - 2) + fibonacci(n - 1)
i = 0
while True:
i = i + 1
if fibonacci(i) <= N:
print(fibonacci(i), "", end='')
else:
break
n = int(input())
memo = [0 for i in range(n+1)]
def fibo(n):
if n == 1 or n == 0:
memo[n] = n
return memo[n]
else:
if memo[n] > 0:
return memo[n]
else:
memo[n] = fibo(n-1)+fibo(n-2)
return memo[n]
fibo(n)
print(memo)
n = int(input('정수 n은?>'))
pibo = [0, 1]
for i in range(n):
pibo.append(pibo[i] + pibo[i + 1])
if n < pibo[i+2]:
break
del pibo[-1]
print(pibo)
Scanner sc = new Scanner(System.in);
System.out.print(">> 정수 n을 입력하세요 => ");
int n = Integer.parseInt(sc.nextLine());
int[] num = new int[9999];
int m = 0;
for(int j=2; j<9999; j++) {
if(n>2) {
num[0] = 0;
num[1] = 1;
num[j] = num[j-1] + num[j-2];
if( (num[j]>n) ) {
m = j;
break;
}
}
else if (n==1){
num[0] = 0;
}
else if(n==2) {
num[0] = 0;
num[1] = 1;
}
}
for(int i=0; i<m; i++) {
String str = ((i!=m)&&(i!=0))?", ":"";
System.out.print(str+num[i]);
}
sc.close();
#include <stdio.h>
int main(void)
{
int a1 = 0, a2 = 1;
int a3 = 0;
int n = 0;
printf("정수 입력: ");
scanf_s("%d", &n);
printf("%d %d ", a1, a2);
while (1)
{
a3 = a1 + a2;
if (a3 > n)
break;
printf("%d ", a3);
a1 = a2;
a2 = a3;
}
return 0;
}
int main()
{
int n, temp, a = 0, b = 1;
printf("정수 n을 입력하세요 : ");
scanf_s("%d", &n);
while (a < n)
{
printf("%d ", a);
temp = a;
a += b;
b = temp;
}
printf("\n");
}
PHP
$fibonacci = function(int $n) use(&$fibonacci) : int {
return $n <= 1 ? $n : $fibonacci($n - 1) + $fibonacci($n - 2);
};
$result = [];
foreach (range(0, 7) as $n) {
$result[] = $fibonacci($n);
}
print_r($result); // [0, 1, 1, 2, 3, 5, 8, 13]
import java.util.Scanner;
public class Fibonacci {
public static void main(String[] args)
{
@SuppressWarnings("resource")
Scanner scn = new Scanner(System.in);
System.out.print("n 이하까지의 피보나치 수열을 출력. n값 입력: ");
int n = 0;
try {
n = scn.nextInt();
int i=0;
while( fibo(i)<=n ){
i++;
}
for(int j=0; j<i; j++){
System.out.print(fibo(j) + " ");
}
} catch (Exception e) {
System.out.println("숫자를 입력해주세요");
e.printStackTrace();
}
}
public static int fibo(int n){
if(n <= 1){
return n;
}else{
return fibo(n-2) + fibo(n-1);
}
}
}
maximum = int(input())
count = 0
a, b = 0, 1
box = []
while count < maximum:
if count == 0:
box.append(a)
elif count == 1:
box.append(b)
else:
box.append(box[count - 2] + box[count - 1])
count += 1
print(box)
#include <iostream>
using namespace std;
int main(void)
{
int n, i;
int arr[100]
cout << "정수를 입력하시오 : ";
cin >> n;
for(i=1;i<=n;i++)
cout << PB(arr,i) << " ";
}
int PB(int* arr, int n)
{
if (n == 1)
{
arr[0] = 0;
return 0;
}
else if (n==2)
{
arr[1] = 1;
return 1;
}
else if (n>0)
{
arr[n-1]= arr[n-2]+arr[n-3];
return arr[n-1];
}
}
inp = int(input("input :"))
result = [0, 1]
for k in range(2, inp) :
result.append(result[k-2]+result[k-1])
result
결과
input :10 [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
n=int(input("정수를 입력해주세요(1 이상의 정수):"))
plist=[0,1]
i=2
while True:
new=plist[i-1]+plist[i-2]
if new <= n:
plist.append(new)
else:
break
i=i+1
print(plist)
n=int(input()) #n값을 int형태로 input
list=[0,1]
for i in range(1,n-1): #0,1이 기존에 있으므로 2개 뺌
list.append(list[i-1]+list[i]) #바로앞 수와 더해서 리스트에 추가
print(list)
(2)
def fib(n):
list=[0,1]
i=0
for i in range(2,n):
list.append(list[i-2]+list[i-1])
print(list)
return ''
n=int(input("정수 n값을 입력하시오."))
print(fib(n))
# 피보나치 수율
value = int(input("몇개의 피봇 : "))
pivo = [0,1]
for i in range(value-2):
pivo.append(pivo[i]+pivo[i+1])
print(pivo)
n=input('피보나치 수열을 몇 이하까지 구할까? : ')
n=int(n)
a=0
b=1
if n<0:
print('음수의 피보나치 수는 없다.')
else:
while a<=n:
print(a)
a,b=b,a+b
파이썬입니다
Python 3.7.4
limit = int(input('한계 숫자를 입력하세요:'))
Lpro = [0, 1]
while (Lpro[-2]+Lpro[-1]) <= limit:
Lpro.append(Lpro[-2]+Lpro[-1])
print(Lpro)
n_number=input('Enter number: ')
fibonacci=list()
num_1=1
num_2=0
fibo=2
fibonacci.append(num_1)
fibonacci.append(fibo)
while True:
num_2=fibo
fibo+=num_1
if fibo<int(n_number):
fibonacci.append(fibo)
num_1=num_2
elif fibo>int(n_number):
break
print(fibonacci)
import java.util.Scanner; public class FibonacciSequence2 { public static void main(String[] args) { Scanner fibo = new Scanner(System.in); //int input = fibo.nextInt(); 이문장의 경우 Scanner에서 입력받은 값을 nextInt 메소드로 입력받은 후 input 변수에 대입. int n = fibo.nextInt(); int a = 0, b = 1;
if(n==0) {
System.out.println(0);
}
if(n==1) {
System.out.println(0);
System.out.println(1);
}
if(n!=0&&n!=1) {
System.out.println(0);
for(int i=0; i<n-2; i++) {
if(n>=a&&n>=b) {
if(a<b) {
a+=b;
System.out.println(b);
}
else {
b+=a;
System.out.println(a);
}
}
else {
System.exit(0);
}
}
}
}
}
import java.util.Scanner; public class FibonacciSequence2 { public static void main(String[] args) { Scanner fibo = new Scanner(System.in); //int input = fibo.nextInt(); 이문장의 경우 Scanner에서 입력받은 값을 nextInt 메소드로 입력받은 후 input 변수에 대입. int n = fibo.nextInt(); int a = 0, b = 1;
if(n==0) {
System.out.println(0);
}
if(n==1) {
System.out.println(0);
System.out.println(1);
}
if(n!=0&&n!=1) {
System.out.println(0);
for(int i=0; i<n-2; i++) {
if(n>=a&&n>=b) {
if(a<b) {
a+=b;
System.out.println(b);
}
else {
b+=a;
System.out.println(a);
}
}
else {
System.exit(0);
}
}
}
}
}
파이썬 입니다.
def fibonacci(n):
a=0
b=1
print('0', end='')
while b <= n:
print(f',{b}',end='')
a,b=b,a+b
함수형태로 감싸봤습니다.
파이썬과 함께.. def num(n): if n == 0: return n + 1 if n == 1: return 1 return num(n-2) + num(n-1)
for i in range(): #빈칸에 임의의 정수를 넣어 피보나치 수열을 counable 하게끔 함 print(num(i))
def num(n):
if n == 0:
return n + 1
if n == 1:
return 1
return num(n-2) + num(n-1)
for i in range(): #빈칸에 임의의 정수를 넣어 피보나치 수열을 counable 하게끔 함
print(num(i))
파이썬으로 재업로드만 세번째 ㅠㅠ
n = int(input('자연수를 입력하세요:'))
a = 0
b = 1
print(a, end= '')
while b <= n:
print(', %d' %b, end = '')
a, b = b, a+b
def fib(n):
if n == 0:
return 0
if n == 1 or n == 2:
return 1
else:
return fib(n-2) + fib(n-1)
def test(n):
for i in range(n):
print fib(i)
test(10)
파이썬 3.6 입니다
def fibo(n):
result = [0, 1]
while (result[-1] + result[-2]) < n:
result.append(result[-2] + result[-1])
return result
print(fibo(14))
list_pibo = [0, 1]
n = int(input("n의 값을 입력하시오."))
sum = 1
i = 0
while True:
sum = list_pibo[i] + list_pibo[i+1]
i += 1
if sum < n:
list_pibo.append(sum)
else:
break
print(list_pibo)
파이썬입니다.
n= int(input('숫자를 입력하세요'))
a, b= 0, 1
print('0', end='')
while b <= n:
print(', {}'.format(b), end='')
a, b= b, a+b
n1 = 0
n2 = 1
n3 = 0
num = input("피보나치 수의 상한 값을 입력하세요: ")
while n3 < int(num):
n1 = n2
n2 = n3
n3 = n1+n2
print(n3)
ex)20을 입력 0+1=1 1+1=2 1+2=3 2+3=5 3+5=8 5+8=13 8+13=21
X = int(input('정수를 입력하세요'))
lst = [0,1]
cnt = 0
while True:
new_item = lst[cnt] + lst[cnt+1]
if new_item <= X:
lst.append(new_item)
cnt += 1
else:
break
print(lst)
int* pibonazziz(int n)
{
int pi_array_size_counter;
int *temp = new int;
int pi_array_size_counter =0;
for(int i =0; i<n;i++)
{
i ==0 ? temp[0] = 0: i==1? temp[1] = 1:0;
i>1? temp[i] = temp[i-1]+temp[i-2]:0;
pi_array_size_counter++;
}
int result[pi_array_size_counter];
for(int i=0;i<pi_array_size_counter;i++)
{
result[i] = temp[i];
}
delete[] temp;
return result;
}
num=input("정수 n을 입력하시오: ")
n=int(num)
list = [0,1]
def fo(n):
if n==0: #0도 정수이므로 0을 입력했을 시 [0]을 받기 위함
del list[1]
return list
while list[-1]+list[-2] <= n:
list.append(list[-1]+list[-2])
return list
print(fo(n))
a=0 b=1 Fibo =[]
n = int(input("How long do you want Fibonazi to go?"))
if n == 1:
Fibo.append(a)
print(Fibo)
elif n == 2:
Fibo.append(a)
Fibo.append(b)
print(Fibo)
else : Fibo = [a,b]
for i in range (3,n+1) :
i+=1
c = a + b
Fibo.append(c)
a = b
b = c
print (Fibo)
n = int(input("값을 넣으세요!: "))
a = 0
print(a)
b = 1
while True:
print(b)
c = a + b
a = b
b = c
if b > n :
break
inNum = int(input("Put the limit number"))
fiboLst = [0,1]
tmpLst = 0
outLst = [0,1]
while True:
tmpLst=(fiboLst[0]+fiboLst[1])
outLst.append(tmpLst)
fiboLst[0] = fiboLst[1]
fiboLst[1] = tmpLst
if tmpLst>=inNum:
break
print(outLst)
파이썬 3 수열을 리스트에 저장하지 않고 출력만 했습니다.
n = int(input())
x, y = 0, 1
def Fibonacci_fn(a,b): # b를 a로 옮기고 b는 a+b로 출력
return b, a+b
while x <= n:
print(x,end='')
x, y = Fibonacci_fn(x,y)
if x <= n: print(end=', ')
public class Fibonacci {
int fibonacci(int n) {
if(n== 0 || n==1) {
return n;
}
else{
return fibonacci(n-2) + fibonacci(n-1);
}
}
}
``````{.java}
public class Fibonacci {
int fibonacci(int n) {
if(n== 0 || n==1) {
return n;
}
else{
return fibonacci(n-2) + fibonacci(n-1);
}
}
}
import java.util.Scanner;
public class FibonacciArray1 {
public static void main(String[] args) {
Fibonacci fibo = new Fibonacci();
Scanner Sc = new Scanner(System.in);
System.out.print("정수를 입력하시오: ");
int n = Sc.nextInt();
int i=0;
while(fibo.fibonacci(i)<=n) {
i++;
}
for(int l=0; l<i; l++) {
System.out.print(fibo.fibonacci(l)+" ");
}
Sc.close();
}
}
def pibonacci(n):
result = [0,1]
for i in range(0,n):
result.append(result[i]+result[i+1])
if result[i+2] > n:
break
del result[-1]
print(result)
num=int(input())
fibonach=0
fibonach_pre=1
print('0',end=' ')
for i in range(1,num+1):
print(fibonach,end=' ')
fibonach,fibonach_pre=fibonach+fibonach_pre,fibonach
def fib(n): if n == 0 : return 0 if n == 1 : return 1 return fib(n-2) + fib(n-1)
for i in range(10): print(fib(i))
파이썬입니다.
def pib(num):
i=1
a=[0,1]
while i<num:
a.append(a[i-1]+a[i])
i=i+1
return a
print(pib(15))
>>[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610]
def fibonacci(n):
n = int(input('정수를 입력하세요:'))
a, b = 0,1
answer = [0,1]
while b <= n:
answer.append(a+b)
a, b = answer[-2], answer[-1]
if answer[-1] > n:
answer.pop()
break
return answer
파이선 3.8
def find_under_Fibonacci(num):
Fibo = [0, 1]
while 1:
Fibo.extend([Fibo[-2] + Fibo[-1]])
if Fibo[-1] > num:
return Fibo[:-1]
print("-- 100 이하의 피보나치 수들 --")
print(find_under_Fibonacci(89))
n = int(input())
l=[0,1]
for i in range(2,n):
l.append(l[i-1]+l[i-2])
print("{0} 이하까지의 피보나치 수열:".format(n), l)
def Lower_Fib(num):
Cu1=1
Cu2=0
Mid=0
while Cu2<=num:
Mid=Cu2
Cu2+=Cu1
Cu1=Mid
print(Cu1, end=" ")
print(Lower_Fib(int(input())))
print ("n?",end="")
num=int(input())
a=0
b=1
print(a)
print(b)
c=a+b
while (c<=num):
print (c)
a=b
b=c
c=a+b
파이썬으로 만들어 봤어요
while True:
try:
a = int(input("MAX\n:"))
break
except:
pass
b = 0
c = 1
list_1 = []
list_1.append(b)
list_1.append(c)
while True:
b += c
list_1.append(b)
if list_1[-1] > a:
del (list_1[-1])
break
c += b
list_1.append(c)
if list_1[-1] > a:
del(list_1[-1])
break
print("{}".format(list_1))
fibo=[] n=int(input()) for i in range(n): if i==0 : fibo.append(0) elif i==1: fibo.append(1) else: fibo.append(fibo[i-1]+fibo[i-2]) print(fibo[n-1])
i = 0
a = 0
b = 1
press = int(input("몇 까지 피보나치 수열을 이어갈 지 입력하시오: "))
print(a) # 0
print(b) # 1
while i != press:
a = a + b
if a > press:
break
else:
print(a) # a = 1
b = a + b # b = 2
if b > press:
break
else:
print(b)
i += 1
n=int(input("Input the number of terms you want: "))
m=1
a=1
b=0
c=0
print(b)
print(a)
while m<n:
c = b
b = a
a=b+c
print(a)
m+=1
i = int(input('몇 번째 피보나치 수열까지 구할지 작성하시오 : '))
j = [0, 1]
def Fibonacci_Sequence(a):
for ii in range(a-2):
j.append(int(j[ii]+ j[ii+1]))
print(j)
Fibonacci_Sequence(i)
# 피보나치 수열이란, 첫 번째 항의 값이 0이고 두 번째 항의 값이 1일 때, 이후의 항들은 이전의 두 항을 더한 값으로 이루어지는 수열을 말한다.
# 인풋을 정수 n으로 받았을때, n 이하까지의 피보나치 수열을 출력하는 프로그램을 작성하세요
n = int(input("整数を入力してください。"))
i = 0
result = [0, 1]
while result[-1] + result[-2] <= n:
result.append(result[-1] + result[-2])
i = result[-1]
print(result)
user_in = int(input())
x = [0,1] y = []
if user_in < 2: print(x[0]) elif user_in <3: print(x[0], x[1]) else: for i in range(2,user_in): y = x[-1] + x[-2] x.append(y)
print(x)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void main()
{
int n;
int p1 = 0 , p2 = 1, p;
printf("정수를 입력해 주세요.");
scanf("%d", &n);
p = 1;
if (n < 0)
{
printf("해당 수 이하의 피보나치 수가 없습니다.");
}
else if (n == 1)
{
printf("0");
}
else if (n == 2)
{
printf("0, 1, 1");
}
else
{
while (p <= n)
{
printf("%d ", p);
p = p1 + p2;
p1 = p2;
p2 = p;
}
}
}
파이썬
#입력 : 정수 n
#출력 : n이하까지의 피보나치 수열
n = int(input("정수 n을 입력하라"))
a=0
b=1
print(a,end=" ")
while True:
if b<=n:
print(b, end=" ")
a,b=b,a+b
else : break
val = int(input("숫자를 입력하시오: "))
pre = 0
i = 1
print(pre, ", ", end="")
while pre+i <= val:
print(pre + i, ", ", end="")
pre = i
i += 1
val = int(input("숫자를 입력하시오: "))
def fibonacci(n):
a = [0, 1]
while n >= (a[-1] + a[-2]):
a.append(a[-1] + a[-2])
print(a)
fibonacci(val)
#include <iostream>
using namespace std;
int FiboNachi(int n) {
if (n == 1)return 0;
if (n == 2)return 1;
return FiboNachi(n - 2) + FiboNachi(n - 1);
}
int main() {
//13: 0,1,1,2,3,5,8, 13
int num;
cout << "값을 입력하세요 :";
cin >> num;
for (int i = 1; i < num; i++)
if (FiboNachi(i) <= num)cout << FiboNachi(i) << " ";
}
def pibonachi(first,second,last): #첫번째, 두번째로 시작하는 피보나치 수열을 last 값만큼 구한다.
result = []
result.append(first)
result.append(second)
for i in range(1,int(last)+1):
sum=result[i-1]+result[i]
if sum <=last:
result.append(result[i-1]+result[i])
else: break
return result
a= pibonachi(0,1,int(input("숫자를 입력하세요")))
print(a)
num = int(input())
sequence_ = [0, 1]
a = 0
b = 1
nxt_ = 0
while nxt_ <= num:
nxt_ = a+b
a = b
b = nxt_
if nxt_ > num:
print(sequence_)
break
sequence_.append(nxt_)
x = int(input("x "))
num = [0, 1]
while 1 :
new = num[-2] + num[-1]
if new < x :
num.append(new)
else :
break
print(num)
파이썬 풀이입니다.
maxNumber=int(input("정수를 입력하세요 : "))
value=0
numList=[0,1]
if maxNumber==0:
print("List : ",[0])
elif maxNumber==1:
print("List : {}".format(numList))
else:
while(True):
addValue=numList[value]+numList[value+1]
if addValue>maxNumber:
break
numList.append(addValue)
value+=1
print("List : {}".format(numList))
n=int(input("입력 : "))
list_p=[]
cur=0
last=1
while True:
temp=last
last+=cur
list_p.append(cur)
cur=temp
if(cur>n):break
print(list_p)
n=int(input(' 수열 리미트? : '))
piv=[0,1]
for i in range(n):
piv+=[piv[-1]+piv[-2]]
if piv[-1]>n : break
print(piv[0:-1])
def fib(n):
result = [0, 1]
if n < 1:
print([0])
elif n <2:
print([0, 1, 1])
else:
i = 0
while result[-1] < n:
result.append(int(result[i]) + int(result[i+1]))
i += 1
if result[-1] > n:
print(result[:-1])
break
print(result)
fib(1)
def make_fibo(num):
i = 2
fibo_list = [0, 1]
while True:
fibo_value = fibo_list[i-2]+fibo_list[i-1]
if fibo_value > num:
break
else:
fibo_list.append(fibo_value)
i += 1
return fibo_list
num = int(input('Enter number: '))
print(make_fibo(num))
def p(n):
a = 0
b = 1
c = a + b
result = [a]
while c < n:
result.append(c)
c = a + b
a = b
b = c
return result
print(p(100))
int main(void) {
int n;
printf("인풋 정수 입력: ");
scanf("%d", &n);
printf("0, 1, ");
int arr[100] = {0,1,};
for (int i = 2;; i++) {
arr[i] = arr[i - 2] + arr[i - 1];
if (arr[i] > n)
return 0;
else
printf("%d, ", arr[i]);
}
}
c로 풀어봤습니다. 배열을 사용하지않고 풀어보려했으나 힘들어서 포기했습니다
import java.util.ArrayList;
import java.util.Scanner;
public class Q069{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("Input : ");
int n = scan.nextInt();
ArrayList<Integer> result = new ArrayList<Integer>();
for(int i=0; i<n; i++) {
if(i==0||i==1) {
result.add(i);
}
else if(i>1) {
result.add(result.get(i-1)+result.get(i-2));
}
}
System.out.println("result : " + result);
scan.close();
}
}
java
def fib_seq(n):
seq_list = [0, 1]
while seq_list[-1] <= n:
seq_list.append(seq_list[-1] + seq_list[-2])
return seq_list[:-1]
n = input()
i = 0
a = [0,1,1]
while a[-1] <= int(n):
if (a[-1] + a[-2]) > int(n):
break
else:
a.append(a[-1] + a[-2])
i += 1
print(a)
n = int(input('숫자를 입력하세요: '))
F = [0, 1]
while (F[-1] + F[-2]) <= n:
F.append(F[-1] + F[-2])
print(F)
def fibonacci(n): if n == 0: return 0 if n == 1: return 1 return fibonacci(n-2) + fibonacci(n-1)
insert = int(input("insert : ")) for i in range(insert): print(fibonacci(i))
#Fibonacci_numbers.py
fibonacci_numbers = [0,1]
n = int(input("input a positive number : "))
i=0
while(fibonacci_numbers[i]+fibonacci_numbers[i+1] <= n):
fibonacci_numbers.append(fibonacci_numbers[i]+fibonacci_numbers[i+1])
i = i+1
print(fibonacci_numbers)
def pivo(n):
a1=0
a2=1
a3=0
a=[a1,a2]
if n==0 :
print(a[0])
elif n==1 :
print(a[0],a[1],a[1])
elif n > 1 :
while a3 < n :
a3 = a1 + a2
if a3 <= n :
a.append(a3)
a1 = a2
a2 = a3
print(a)
package codingdojang;
import java.util.Scanner;
public class example006_피보나치수열 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(true) {
System.out.println("정수 n을 적어주세요.");
int intValue = 0;
try {
intValue = sc.nextInt();
if(intValue <1) {
System.out.println("1보다 적은 수를 적을 수 없습니다.");
}else {
valueList(intValue);
}
System.out.println(valueList(intValue));
}catch(Exception e) {
System.out.println("정수를 적어주세요.");
}
}
}
public static int valueList(int num) {
if(num <= 1)
return num;
else {
return valueList(num-2) + valueList(num-1);
}
}
}
#include <iostream>
using namespace std;
int main()
{
int input = 0, max = 0;
cin >> input;
int arr[100];
for (int i = 0; max < input; i++) {
if (i < 2) {
arr[i] = i;
cout << arr[i] << " ";
}
else {
arr[i] = arr[i - 1] + arr[i - 2];
if (arr[i] < input)cout << arr[i] << " ";
}
max = arr[i];
}
return 0;
}
C++ array
def fibo(n):
s = []
for i in range(10):
if i > 1:
s.append(s[i-1] + s[i-2])
else:
s.append(i)
return s
print(fibo(10))
import java.util.Scanner;
public class main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("어디까지 출력하실?");
int n = scan.nextInt();
int[] pabonaci = new int[100];
pabonaci[0] = 0;
pabonaci[1] = 1;
for(int i=0;i<100;i++)
{
if(i!=0 && i!=1)
{
pabonaci[i] = pabonaci[i-1] + pabonaci[i-2];
}
if(pabonaci[i]>n)
break;
System.out.print(pabonaci[i]+ " ");
}
}
}
public class Multiples {
public static void main(String[] args){
int under=100;
int x1=0;
int x2=1;
int sum=0;
while(sum<under){
System.out.println(sum+"\n");
sum=x1+x2;
x1 =x2;
x2=sum;
}
}
}
public static int[] makePibo(int num) {
int[] result = new int[num];
result[0]=0;
result[1]=1;
for(int j=2;j<num;j++) {
result[j]=result[j-2]+result[j-1];
}
return result;
}
def Fibo(n):
arr = [0,1]
i=0
while (arr[i]+arr[i+1])<n:
arr.append(arr[i+1]+arr[i])
i+=1
print(arr)
num = int(input("정수 n을 입력세요. 피노나치수열 출력!"))
Fibo(num)
N = input("> ")
L=[0,1]
def fibonachi(L):
L.append(L[-1]+L[-2])
while L[-1]<int(N):
fibonachi(L)
L.pop()
print(L)
"""
파이썬을 이용하였습니다.
이용자가 정수값을 입력하는 방식을 사용하였고, 양의 정수 이외에 다른 것을 입력하면 프로그램이 끝나도록 만들었습니다.
리스트 인덱싱과 while 반복문을 이용하여 피보나치 수열을 구하는 방식입니다.
"""
num = input("Input positive integer: ")
try:
num = int(num)
if num<=0:
print("Error! Input positive integer please!")
else:
lst = [0,1]
n=0
c=int()
while c<=num:
c = lst[n]+lst[n+1]
if c>num :break
lst.append(c)
n = n+1
print(lst)
except:
print("Error! Input correct positive integer please!")
n = int(input("정수 n = "))
p=[0,1]
while p[len(p)-1] <= n:
p.append(p[len(p)-2]+p[len(p)-1])
del p[len(p)-1]
print(p)
package Lv_1;
import java.util.Scanner;
import java.util.ArrayList;
public class fibonacci {
int size;
ArrayList<Integer> list = new ArrayList<Integer>();
//피보나치 함수 생성
public fibonacci(int n) {
this.size = n;
list.add(0);
list.add(1);
if(size<1) {
list.remove(1); //정수 0을 입력하였을 시 1삭제
} else {
for(int i=2; i<(size*3); i++) { //3이하의 수 입력시 오출력 방지를 위해 배열 크기 2배화
list.add(list.get(i-2)+list.get(i-1));
if(list.get(i)>size) {
list.remove(i);
break;
}
}
}
}
//피보나치 함수 출력
public void print() {
System.out.println(size + " 이하 까지의 피보나치 수열");
System.out.println(list);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int i;
while(true) {
System.out.print("정수를 입력하세요 : ");
i = sc.nextInt();
if(i<0) {
System.out.println("0 이상의 정수 입력 필요");
} else break;
}
fibonacci fi = new fibonacci(i);
fi.print();
}
}
import java.util.Scanner;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int sum = 0;
int[] arr = new int[sc.nextInt()];
arr[0] = 0;
arr[1] = 1;
System.out.print("0, 1");
for(int i=2;i<arr.length;i++) {
arr[i]=arr[i-2]+arr[i-1];
System.out.print(", "+arr[i]);
}
}
wjdtn=0
wjdtn = int(input("정수 값을 입력하시오 : "))
a,b = 0,1
while 1:
print (a,end = " ")
if a >= wjdtn or b > wjdtn:
break
a = a+b
print (b,end = " ")
if b>= wjdtn:
break
b = b+a
코딩 이제 막 시작한 병아립니다. 조언 부탁드려요
plist=[0,1]
num=0
# 항이 12개까지인 피보나치 수열
for num in range(0,10):
plist.append(plist[num]+plist[num+1])
num=num+1
newValue=int(input("숫자를 입력해주세요:"))
for i in plist:
if i<=newValue:
print(i)
number = int(input("1 이상의 정수 n을 입력하세요 : "))
result = [0,1]
m = 0
while int(result[m]+result[m+1]) <= number:
result.append(result[m]+result[m+1])
m += 1
print(result)
초보입니다. 피드백 주시면 감사하겠습니다. :)
def Pibo(n):
a = [0,1]
if n == 0:
return 0
if n == 1:
return [0,1]
else:
for i in range(2,n+2):
c = a[i-1]+a[i-2]
if c >= n:
break
else:
a.append(c)
continue
print(a)
return a
def fibo(i):
l = [0, 1]
while True:
r = int(l[-1]) + int(l[-2])
if int(r) < int(i):
l.append(r)
else:
break
return l
while True:
ib = input("피보나치 수열 구하기, 원하는 숫자 입력(나가기 : q) : ")
if ib == "q":
break
try:
n = int(ib)
if n > 0:
result = fibo(n)
print("{} 이하 피보나치 수열 => {}".format(n, result))
print("")
else:
print("'0'보다 큰 수를 입력하세요")
input("Enter를 치세요~")
print("")
continue
except:
print("잘못된 입력입니다.")
print("")
n = int(input("정수 입력>>> "))
def fibonacci_seq(num):
sequence_list = [0, 1]
i = 2
while (sequence_list[i - 2] + sequence_list[i - 1]) <= num:
sequence_list.append(sequence_list[i - 2] + sequence_list[i - 1])
i += 1
return sequence_list
print(fibonacci_seq(n))
def run(n):
pre = 0
cur = 1
print('0', end='')
while cur <= n:
print(f', {cur}', end='')
pre, cur = cur, pre + cur
print("")
run(5)
n=int(input))
result=[ ] for i in range(n):
if i==0:
result.append(i)
elif i==1: result.append(i)
else: i=result[-2] + result[-1] result.append(i)
print(result)
import java.util.*;
public class test4 {
public static void main(String[] args) {
int n = 10;
Stack<Integer> list = new Stack<>();
list.push(0);
list.push(1);
System.out.print("0,");
while(true) {
int a = list.pop();
int b = list.pop();
int c = a + b;
if(c > n) {
break;
}
System.out.print(c+",");
list.push(c);
list.push(b);
}
}
}
스택을 이용해서 풀어봤습니다,
#include<stdio.h>
/*
파보나치 수열 구하기
http://codingdojang.com/scode/461
*/
int main(){
int a1=0;
int a2=1;
int n=2;
int temp,input;
printf("n이하의 파보나치 수열을 구하자\nn값은?:");
scanf("%d",&input);
printf("1:0\n2:1\n");
while(1)
{
temp=a1+a2;
a1=a2;
a2=temp;
n++;
if (input>temp)
printf("%d:%d\n",n,temp);
else
break;
}
return 0;
}
C언어- while안에 조건문을 넣으면 입력한 숫자에서 한번 더 계산하네요 그래서 if문을 넣었습니다만... 어렵네요 do while도 같은 결과가 나오는데 뭘까요
n = (int(input("give me numbers: ")))
def p(n) a = [] for i in range(n): a.append(i) if len(a) > 1 and i <= a[-1]: c = i + a[i-2] a.append(c) return a print(a)
public class Fibonacci {
private static int NUMBER = 0;
private static int[] FIBONACCI = new int[10];
public static void main(String[] args) {
scanNumber(NUMBER);
printNumber(NUMBER);
}
public static void scanNumber(int num) {
Scanner scan = new Scanner(System.in);
System.out.println("숫자를 입력해주세요.");
NUMBER = scan.nextInt();
}
public static void printNumber(int num) {
int temp = 0;
int i = 0;
FIBONACCI[0] = 0;
FIBONACCI[1] = 1;
while(temp < num) {
temp = FIBONACCI[i] + FIBONACCI[i+1];
FIBONACCI[i+2] = temp;
i++;
}
for (int j = 0; j < FIBONACCI.length; j++) {
System.out.print(FIBONACCI[j] + ",");
}
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("1번 항 : ");
int num1 = sc.nextInt();
System.out.print("2번 항 : ");
int num2 = sc.nextInt();
System.out.print("수열의 길이 : ");
int length = sc.nextInt();
sc.close();
List<Integer> list = new ArrayList<>();
list.add(num1);
list.add(num2);
for(int i = 2; i < length; i++) {
list.add(i, (list.get(i-2) + list.get(i-1)));
}
System.out.println(list);
}
seq=[0,1]
k=int(input())
for i in range(k):
m=seq[-2]+seq[-1]
if m>k:
break
seq.append(m)
print(seq)
n = int(input('number : '))
a = [0,1]
while a[-1] <= n :
a.append(a[-1] + a[-2])
if a[-1] > n :
a.pop()
print(a)
#include <iostream>
#include <queue>
using namespace std;
int main() {
queue<int> fibo;
fibo.push(0);
fibo.push(1);
int n;
cin >> n;
for (int i = 0;; i++) {
int temp = fibo.front();
fibo.pop();
fibo.push(temp + fibo.front());
if (temp > n)
break;
cout << temp << " ";
}
return 0;
}
def pibo(n): #n>=3
a = [0, 1]
for i in range(1,n-1):
a.append((a[i-1] + a[i]))
return print(a)
pibo 함수로 정의하였습니다.
using System;
namespace _62일차_10월02일
{
class MainApp
{
static void Main(string[] args)
{
Console.Write("Input Number : ");
string Input_Num = Console.ReadLine();
int First = 0;
int Second = 1;
int Result = 0;
while (Result <= int.Parse(Input_Num))
{
Result = First + Second;
First = Second;
Second = Result;
if (Result < int.Parse(Input_Num))
{
Console.Write($"{Result} ");
}
}
}
}
}
class FiboGenerator:
def __init__(self):
self.b = []
def getFibo(self,n):
self.b.append(0)
self.b.append(1)
i = 2
while True:
m = self.b[i-2]+self.b[i-1]
if m>n:
break
else:
self.b.append(m)
i += 1
return self.b
n = 100
a = FiboGenerator()
b = a.getFibo(n)
print(b)
n=int(input("number"))
a=0 b=1 print(a, ",", b, end="" )
x=1 while (x<=n): print(",", x, end="") a=b b=x x=a+b
파이썬입니다, 피보나치 수를 반환하는 함수와 for loop으로 출력하는 함수 두개 작성했습니다.
def fib(n):
if n <= 0:
return 0
elif n <= 1:
return n
else:
return fib(n-2) + fib(n-1)
def fib_nums(n):
for num in range(n):
print(fib(num), end=', ')
fib_nums(10)
a1=0
a2=1
n=int(input())
if n==0:
print(a1)
if n==1:
print(a1)
print(a2)
print(a2)
elif n>1:
print(a1)
print(a2)
while(1):
sum=a1+a2
if sum>n:
break
print(sum)
a1=a2
a2=sum
python while 로 풀어보았습니다.
n = int(input()) # 입력 받은 정수의 값
def fibo(n):
fibo_list = [0, 1]
index = 0
while True:
sum = fibo_list[index] + fibo_list[index + 1]
if sum <= n:
fibo_list.append(sum)
else:
break
index += 1
print(", ".join(list(map(str, fibo_list))))
fibo(n)
입력 값 : 100 결과 : 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89
n = int(input("type an integer n: "))
fib=[0,1]
for i in range(n):
temp = fib[-2]+fib[-1]
if temp <= n:
fib.append(temp)
else:
break
print(fib)
fibo_list = [0, 1]
n = int(input("정수를 입력 : "))
for i in range(2, n):
next_fibo = fibo_list[i-1] + fibo_list[i - 2]
fibo_list.append(next_fibo)
print(fibo_list)
Input = int(input())
def fibonach(a) :
lst = ['0','1']
for i in range(2,a) :
lst.append(str(int(lst[i-2]) + int(lst[i-1])))
return ', '.join(lst)
print fibonach(Input)
start=0
end=int(input())
numbers=[]
numbers.append(start)
while True:
if start==0:
if start>end:
for x in numbers:
print(x,end=' ')
break
else:
start=start+1
numbers.append(start)
numbers.append(start)
if start==1:
if start>end:
for x in numbers:
print(x,end=' ')
break
else:
start=start+1
numbers.append(start)
if numbers[-1]+numbers[-2]>end:
for x in numbers:
print(x,end=' ')
break
else:
numbers.append(numbers[-1]+numbers[-2])
def add(a,b):
c = a + b
return c
l = [0,1]
p = 1
w1 = 0
w2 = 0
w3 = 0
while True:
w1 = l[p-1]
w2 = l[p]
w3 = add(w1,w2)
p = p + 1
num = int(input())
lst = [0 ,1]
i = 0
while True:
if lst[len(lst)-1] < num:
lst.append(lst[i] + lst[i+1])
i += 1
else:
break
print(lst[:-1])
어렵게 풀었네요 ;; ? 다른분의 파이썬 풀이를 보니 ! "아!!.."
n=int(input())
x=[0,1]
y=0
if n<2:
print (x[0])
elif n==2:
print (x[0],x[1])
else:
for i in range(2,n):
y=x[i-1]+x[i-2]
x.append(y)
print(x)
n = int(input("n is :"))
pibo = [0, 1]
i = 0
while pibo[i] + pibo[i+1] < n :
pibo.append(pibo[i]+pibo[i+1])
i += 1
print(pibo)
pibonachi = [0, 1]
result = pibonachi
def pibonachiSequence(n):
i = 3
while i:
result.append(pibonachi[i - 3] + pibonachi[i - 2])
if result[i - 1] > n:
result.pop()
if n == 0:
result.pop()
break
elif result[i - 1] == n:
break
i += 1
return result
inp = int(input("정수를 입력하세요:"))
print(pibonachiSequence(inp))
package codeDojang;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Scanner;
public class Prac {
public static void main(String[] args){
int num=0;
Scanner sc = new Scanner(System.in);
System.out.print("정수 입력: ");
num = sc.nextInt();
ArrayList<Integer> ar = new ArrayList<>();
ar.add(0);
ar.add(1);
int i=0;
while(true) {
if(ar.get(i)>num) {
break;
}
ar.add(ar.get(i)+ar.get(i+1));
i++;
}
System.out.println(ar);
}
}
a=int(input("write your n :"))
def pibonachi(n):
k=[0,1]
for i in range(n):
c=k[i]+k[i+1]
k.append(c)
print(k[:n])
pibonachi(a)
Scanner sc = new Scanner(System.in);
System.out.println("숫자를 입력하시오. ");
int input = sc.nextInt();
int num1, num2, sum;
num1=0; num2=1; sum=1;
System.out.print(0+" ");
for(int i=0; i<input-1; i++) {
System.out.printf(sum+" ");
sum=num1+num2;
num1=num2;
num2=sum;
}
import java.util.Scanner;
public class fibo {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
System.out.println("수 입력");
int a = sc.nextInt();
for(int i =0; i<a; i++) {
System.out.println(i + "번째 계산중...");
System.out.println(fibona(i));
}
}
public static int fibona(int num) {
if(num<=1)
return num;
else
return fibona(num-2) + fibona(num-1);
}
}
package main;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] arData = {0,1};
int temp = 0;
int temp1 = 1;
int n = sc.nextInt();//반복 횟수
for (int i = 0; i < n; i++) {
if(temp ==0&&temp1==1) {
System.out.println(temp);
System.out.println(temp1);
}
int temp2 = temp+temp1;
temp = temp1;
temp1 = temp2;
System.out.println(temp2);
}
}
}
n=int(input())
array=[0,1]
while array[-1]<=n:
array.append(array[-1]+array[-2])
if array[-1]>n:
array.remove(array[-1])
print(array)
n = int(input("이 프로그램은 입력하는 정수 n 이하까지의 피보나치 수열을 출력하는 프로그램입니다.\n원하는 정수 n의 값을 입력하세요:"))
a = [0, 1]
i = 1
while a[i-1] + a[i] <= n:
a.append(a[i-1] + a[i])
i += 1
print(a)
피보나치 수열의 스펠링은 이게 아니더군요. 파이썬입니당.
def pivo(number):
i=2
pset=[0,1]
while pset[i-2]+pset[i-1] <= number:
pset.append(pset[i-2]+pset[i-1])
i+=1
return pset
print(pivo(10))
def fibonacci(n):
data = [0,1]
if n==1:
return 0
elif n==2:
return data
else:
for i in range(2,n):
data.append(data[i-1]+data[i-2])
return data
fibo_li = [0, 1]
def fibo(input):
if input == 1:
return fibo_li[0]
elif input == 2:
return fibo_li[:2]
else:
for i in range(0, input - 2):
next_fibo = fibo_li[i] + fibo_li[i+1]
fibo_li.append(next_fibo)
fibo(int(input()))
print(fibo_li)
def fibo(n):
if n == 1:
return 0
elif n == 2:
return 1
else:
return fibo(n-2) + fibo(n-1)
n = int(input())
i = 0
while True:
i += 1
if n < fibo(i):
break
print(fibo(i),end=' ')
Python code with recursive function
num = int(input("Enter the number: "))
def fibo(n):
if n == 0 :
return 0
elif n == 1:
return n
else:
return n+ fibo(n-1)
if __name__ == '__main__':
print(fibo(num))
def fibo_(n):
a=[0,1]
i=2
while True:
a.append(a[i-2]+a[i-1])
if a[i]>n:
a.remove(a[i])
break
i=i+1
return a
print(fibo_(10000000000000000000))
def fibo(n):
memo = [0, 1]
i = 2
while memo[i-1] + memo[i-2] <= n:
memo.append(memo[i-1] + memo[i-2])
i += 1
return memo
n = int(input())
x = fibo(n)
for i in x :
print(i, end=" ")
n = int(input())
Fibonacci = [0,1]
while(Fibonacci[-1]+Fibonacci[-2]<n):
Fibonacci.append(Fibonacci[-1]+Fibonacci[-2])
print(Fibonacci)
f_list = [0, 1]
num = int(input("n: "))
for i in range(2, num):
f_list.append(f_list[-1] + f_list[-2])
print(f_list)
const array = [0, 1]
const fibonacci = (n) => {
for (let i = 0; i < n - 2; i++) {
array.push(array[i] + array[i + 1])
}
return array
}
console.log(fibonacci(8))
def fibonach(n):
list1 = [0, 1]
while list1[-2] <= n and list1[-1] <= n:
list1.append(list1[-2] + list1[-1]
if list1[-1] >= n:
list1.pop(-1)
return list1
n = int(input("피보나치 수열 구하기:"))
fibonach(n)
public class CodingTest {
public static void main(String[] args) {
fibonacci(15);
}
public static void fibonacci(int n) {
int[] nums = new int[n];
nums[0] = 0;
nums[1] = 1;
for(int i = 0; i < n-2; i++)
nums[i+2] = nums[i+1] + nums[i];
for(int i = 0; i < n; i++) {
if(i==n-1)
System.out.print(nums[i]);
else
System.out.print(nums[i]+", ");
}
}
}
a = int(input())
list = [0,1]
sum = 0
while(1):
sum = list[-2] + list[-1]
if sum < a:
list.append(sum)
else:
break
print(list)
n = int(input("Input Number : "))
def f(n):
if n == 0:
return 0
if n == 1:
return 1
return f(n-1) + f(n-2)
i = 0
f_numbers = []
while True:
if f(i) <= n:
f_numbers.append(f(i))
else:
break
i += 1
print('Fibonacci Numbers : ', f_numbers)
n = int(input("정수 n을 입력하시오\n:"))
fibo = [0, 1]
for i in range(0, 100): # 피보나치 수열 만듦, 항 102개로 제한
sum = fibo[i]+fibo[(i+1)]
fibo += [sum]
under_N = []
for j in range(0, 102): # n 이하의 숫자 필터링
if n >= fibo[j]:
under_N += [fibo[j]]
print(under_N)
건전한 피드백 환영합니다
def main():
N = int(input('Number : '))
P = [0,1]
if N < 2:
N = int(input('Number : '))
else:
while 1:
if P[-1]+P[-2] < N:
P.append(P[-1]+P[-2])
else:
break
print(P)
if __name__ == '__main__':
main()
코드입니다.
def fib(n):
result = []
if n >= 0: result.append(0)
if n >= 1: result.append(1)
while True:
result.append(result[-1] + result[-2])
if result[-1] > n:
del result[-1]
break
if result[-1] == n:
break
return result
실행 예제입니다.
print(fib(10))
print(fib(100))
print(fib(500))
결과입니다.
[0, 1, 1, 2, 3, 5, 8]
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377]
def fibonazzi(n):
previous, current = 0, 1
while previous <= n:
print(previous)
previous, current = current, current + previous
print(fibonazzi(100))
n = int(input("정수를 입력하세요."))
array=[0,1]
while True: # 참의 조건
s = array[-1]+array[-2] # 맨 뒤의 항 + 그 뒤의 항
if s < n:
array.append(s)
else:
break
print(array)
while문으로 해봤어요
이제 막 점프투파이썬 펼친 걸음마단계에요.
문제가 흥미로워서 머릿속으로 구상하고 이걸 어떻게 표현하나 책에서 사전처럼 찾아서 풀다보니 조금 조악할 수 있는거 같아요.
특히 그랬던 점이
F.remove(F[-1]) break
이쪽인데, F.remove(F[-1]) 없이 출력했을 때는 n을 넘어서게 되는 최초의 마지막항이 포함된 리스트가 출력되더라구요. 예를들어서 n=100을 넣으면, 89까지 출력되면 좋겠는데 143까지 출력되는 식으로요. 그래서 n을 넘는 순간 마지막항을 강제로 지우라는 명령을 해야만 했어요. 이 부분은 조금 맘에 안들더라구요. 너무 작위적인거 같아서요.
그리고 break가 없으니 이게 무한히 리스트를 출력하더라구요?? 제가 while문을 잘못 이해했는지 모르겠는데, F의 마지막 항이 n을 넘지 않으면 자동으로 멈춰야할텐데 F.remove를 넣어서 그런지 얘가 무한히 출력해서 당황했습니다 ㅠㅠ
이 부분을 Fancy하게 처리할 방법을 아시는 분이 도와주신다면 너무너무 감사할것 같습니다! 고맙습니다.
F = [0,1]
n = float(input("수를 입력하세요: "))
while F[-1] < n :
F.append(F[-1]+F[-2])
if F[-1]> n:
F.remove(F[-1])
print(F)
break
import java.util.Scanner;
public class main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("피보나치 수열의 범위를 입력히세요.");
int num = s.nextInt();
int one = 1, two = 1;
int[] arr = new int[100];
// 배열의 인덱스가 0,1 일때는 값이 1
for(int i=0; i<100; i++) {
if(i== 0 || i == 1) arr[i] = 1;
else {
arr[i] = one + two;
one = two;
two = arr[i];
}
}
for(Integer t : arr) {
if(t >= num) break;
System.out.println(t);
}
}
}
def fib(n):
result = ["0", "1"]
while int(result[-1]) + int(result[-2]) <= n:
result.append(str(int(result[-1])+int(result[-2])))
return ','.join(result)
<파이썬 3> [풀이] 결과리스트의 마지막 두개항의 합이 n(입력값)보다 작거나 같을때까지, 마지막 두개항을 합한 값을 결과리스트에 추가해줍니다. 끝
Python입니다.
>>> def fib(n):
... if n == 0:
... return [0]
... elif n == 1:
... return [0, 1]
... else:
... last = fib(n - 1)
... return last + [last[-2] + last[-1]]
...
>>> fib(0)
[0]
>>> fib(1)
[0, 1]
>>> fib(2)
[0, 1, 1]
>>> fib(3)
[0, 1, 1, 2]
>>> fib(4)
[0, 1, 1, 2, 3]
>>> fib(5)
[0, 1, 1, 2, 3, 5]
>>> fib(6)
[0, 1, 1, 2, 3, 5, 8]
>>> fib(7)
[0, 1, 1, 2, 3, 5, 8, 13]
#include <stdio.h>
#include <stdlib.h>
int main() {
int a, i;
printf("3 이상의 정수를 입력하세요 : ");
scanf_s("%d", &a);
int* result = malloc(a * sizeof(int));
result[0] = 0;
result[1] = 1;
for (i = 2; i < a; i++) {
result[i] = result[i - 1] + result[i - 2];
}
printf("주어진 값 까지의 피보나치 수열 : ");
for (i = 0; i < a; i++)
printf("%d ", result[i]);
free(result);
return 0;
}
C언어로 작성했습니다
import java.util.Scanner;
public class Main
{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int a = 0;
int b = 1;
while(true) {
if(a+b > n) break;
a = a+b;
System.out.printf(" %d", a);
if(a+b > n) break;
b = a+b;
System.out.printf(" %d", b);
}
}
}
n = int(input())
x = [0, 1]
for i in range(2, n):
if i < 2:
print(x[0], x[1], end=" ")
else:
x.append(x[i-1] + x[i -2])
print(x)
starter = [0,1]
def pebo(n): i = 0 while (starter[i]+starter[i+1]) <= n: starter.append(starter[i]+starter[i+1]) i += 1 return(starter)
print(pebo(13))
n = int(input("2 이상 정수를 입력하세요 : "))
num_list = [0, 1]
while n <= 1 :
n = int(input("2 이상의 양의 정수를 입력하세요. : "))
while n >= (num_list[-2] + num_list[-1]) :
num_list.append(num_list[-2]+ num_list[-1])
print(num_list)
def pivo(n): if n==0: return 0 if n==1: return 1 if n>=2: return pivo(n-1)+pivo(n-2)
pivo(3) pivo(10)
for i in range(10): print(pivo(i))
from random import *
def 피보나치수열(n):
NACHIlist=[]
for i in range(0,n):
if i == 0:
NACHIlist.insert(0, 1)
elif i == 1:
NACHIlist.append(1)
elif i >1:
NACHIlist.append(NACHIlist[i-1]+NACHIlist[i-2])
else:
pass
return NACHIlist
n=int(input('정수 입력'))
list1=[]; a=0; b=1
while True:
if a>n:
break
list1.append(a)
sum1=a+b
a=b
b=sum1
print(list1)
def fibonacci(n):
list = [0, 1]
i = 0
while list[i] + list[i + 1] <= n:
list.append(list[i] + list[i + 1])
i += 1
return list
print(fibonacci(6))
a = int(input("정수를 입력하세요 : "))
def fibo(n): if n == 0: return 0 elif n == 1:return 1 return fibo(n-2) + fibo(n-1)
for i in range(0,(a+1)): print(fibo(i))
#codingdojing_fibonacci
# f(3) = f(2) + f(1) = f(1)+f(0)+f(1)
# f(4) = f(3) + f(2) = f(1)+f(0)+f(1) + f(1)+f(0)
def fibo(n):
if n == 1:
return 0
elif n == 2:
return 1
else:
return fibo(n-1) + fibo(n-2)
n = eval(input("please enter the number: "))
for i in range(1, n+1):
print(fibo(i))
n=int(input('정수를 입력해주세요: '))
z=[0,1]
while True:
a=z[-1]+z[-2] # 끝에서 두 숫자를 더합니다
if a>n: # 근데 그 더한게 n보다 크면 반복문을 깹니다
break
z.append(a) # 아니면 리스트에 더한 숫자를 추가해줍니다
print(z)
users_input = int(input("Enter any numbers: "))
fibonacci_numbers = [0, 1]; a = 0; b = 1
while fibonacci_numbers[a] + fibonacci_numbers[b] < users_input:
fibonacci_numbers.append(fibonacci_numbers[a] + fibonacci_numbers[b])
a += 1; b += 1
print(fibonacci_numbers)
import UIKit
var input = 3
func solution(_ inputNum: Int) -> Int {
// Properties
var intArr = [0, 1] // 1
var resultInt = Int()
var index = 1
while (resultInt <= inputNum) {
let a = intArr[index - 1] // 첫 번째 항
let b = intArr[index] // 두 번째 항
resultInt = a + b
intArr.append(resultInt) // 이전 두 개의 항을 더한 값을 추가
index += 1
}
intArr.popLast()
let result = intArr.last!
print("DEBUG>> intArr \(intArr) ")
return result
}
solution(34)
n=int(input())
Fib_list=[0,1]
while n>Fib_list[-1]:
Fib_list.append(Fib_list[-1]+Fib_list[-2])
if n<Fib_list[-1]:
Fib_list.remove(Fib_list[-1])
print(Fib_list)
import java.util.Scanner;
public class Ex04 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("정수를 입력하세요" );
int num = sc.nextInt();
for(int i =0; i < num; i++) {
System.out.print(fibo(i) + " ");
}
sc.close();
}
private static int fibo(int num1) {
if (num1 <= 1) {
return num1;
}else {
// 예를 들어 5를 입력하면 0 1 1 2 3 이 나와야 하는데
// 1까지는 for문을 돌면서 그대로 출력
// 2부터는 0+1 로 1이 만들어 진 것이기 때문에
// 0 + 1의 조건을 만들어 줘야 한다
// 0은 입력받은 값의 -2 이고 1은 입력받은 값의 -1이다
// 이렇게 더해서 반환해주는 것이다
return fibo(num1 -2) + fibo(num1-1);
}
}
java
a = input('숫자를 입력하세요. : ', )
b = 0
n = 0
m = 0
fibo = [0,1]
while n < 100:
fibo.append(fibo[n]+fibo[n+1])
n = n + 1
c = len(fibo)
while m <= int(a):
if int(a) >= fibo[m]:
m = m + 1
else:
print(fibo[0:m])
break
p = [0, 1]
s = 0
c = 0
n = int(input('정수를 입력하세요: '))
while True:
s = p[c] + p[c+1]
if s > n:
break
p.append(s)
c += 1
print('정수n이하의 피보나치 수열: {}'.format(p))
n=int(input('숫자를 입력하세요:'))
A=[0, 1]
while True:
a = A[-1]+A[-2]
if a<=n:
A.append(a)
else:
break
print(A)
Total = [] N1 = 0 #피보나치 수열 첫번 쨰 N2 = 1 #피보나치 수열 두번 째 N3 = 0 #피보나치 수열 세번 째 N_P = int(input("숫자를 입력하세요")) while N1 < N_P : Total.append(N1) N3 = N1 + N2 N1 = N2 N2 = N3
print(Total)
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("정수 입력 : ");
int n = sc.nextInt();
int i=0;
ArrayList<Integer> arr = new ArrayList<Integer>();
arr.add(0);
arr.add(1);
while(true){
if(arr.get(i)<=n){
if(i!=0){
System.out.print(", ");
}
}else{
break;
}
System.out.print(arr.get(i));
arr.add(arr.get(i) + arr.get(i+1));
i++;
}
}
}
fibonach = [0, 1]
n = int(input("숫자를 입력(2이상): "))
for i in range(n):
if i < 2:
print(fibonach[i])
else:
fibonach.append(fibonach[i-2] + fibonach[i-1])
print(fibonach[-1])
# 피보나치 수열 코드
# 피보나치 수열을 나열할 수 있는 코드를 작성하라
# 사용한 핵심 전략 : for 반복문
# 1. 초기 변수 입력
n1=0
n2=1
numlist=[]
numlist.append(n1)
numlist.append(n2)
# 2. 출력할 피보나치 수열 개수
x=20
# 3. 피보나치 수열 함수 코딩
for i in range(x-2):
n3=n1+n2
numlist.append(n3)
n1=n2
n2=n3
# 4. 출력
print(numlist)
=> 자바로 작성하였습니다.
package Lv1;
import java.util.*;
public class Fibonacci {
public static void main(String[] args) {
//설명 : 피보나치수열이란 이전항 두개를 더해서 나온 수
// 예 : 0 1 1 2 3 5 8 13 ...
// 문제 => 인풋을 정수 n으로 받았을때, n 이하까지의 피보나치 수열을 출력하는 프로그램을 작성하세요
int []fibonacci = new int[100];
// An = An-1 + An-2 ; n>=3
// a1 = 1, a2 = 2;
fibonacci[0] = 0;
fibonacci[1] = 1;
fibonacci[2] = 1;
for(int i = 3 ; i < 100 ; i++) {
fibonacci[i] = fibonacci[i-1] + fibonacci[i-2];
}
Scanner sc = new Scanner(System.in);
System.out.println("출력하고자 하는 피보나치 수열 n 을 입력하세요.(n이하 출력)");
int n = sc.nextInt();
for(int i = 1 ; i < n ; i++) {
if(array[i]<n)
System.out.printf("피보나치 %d번째 값은 %d%n",i,array[i]);
}
n=int(input("정수 n을 입력하세요: "))
p=[0,1]
while n>=p[-1]+p[-2]: p.append(p[-1]+p[-2])
print(p) if n>0 else print([0])
n = int(input('Enter the number: ')) n_1 = 0 n_2 = 1 N = 0 while N < n: print(N, end=' ') N = n_1 + n_2 n_1 = n_2 n_2 = N
static int fib(int x) {
if(x == 0)
return x;
else if(x == 1)
return x;
else
return fib(x-2) + fib(x-1);
}
public static void main(String[] args) {
for(int i = 0; i <11; i++)
System.out.print(fib(i) + " ");
}
input_n = int(input("정수를 입력하세요."))
nums = [0, 1]
while nums[-1] <= input_n:
nums.append(nums[-2] + nums[-1])
del nums[-1]
print(nums)
arr = [0,1]
n = int(input("정수를 입력하세요"))
print(n)
for i in range(n):
arr.append(arr[i]+arr[i+1])
if arr[i+2] > n:
arr.remove(arr[i+2])
break
print(arr)
var sum = 0;
function fibonacci(x) {
var arrays = [0,1];
if(x == 0) arrays = [0];
else{
for(i=0; i<x; i++) {
sum = arrays[i] + arrays[i+1]
if(sum <= x) {
arrays.push(sum)
}
}
}
console.log(arrays)
}
fibonacci(0)
fibonacci(13)
n = int(input('n을 입력하세요'))
list = [0,1]
x = 2
if n == 0:
print([0])
else:
while True:
list.append(list[x-1] + list[x-2])
if list[x] > n :
break
x += 1
list.pop()
print(list)
Num = [0, 1]
final = 1
num = int(input('정수 n을 입력하시오.'))
while 1:
final += Num[len(Num)-2]
if final > num:
break
Num.append(final)
print(Num)
fibo = [0,1]
n = input("마지막 정수를 입력해주세요:")
for i in range(int(n)+1):
a = fibo[i] + fibo[i+1]
if a >= int(n):
break
fibo.append(a)
print(fibo)
fibonacciNumbers = [0,1] # 최초 피보나치 수열을 정의
n = int(input('정수 n을 입력하시오 : ')) # 정수 n을 입력
i = 1
while True:
add = fibonacciNumbers[i-1] + fibonacciNumbers[i] # 순서대로 더해주어 다음 값을 구한다.
if add <= n: # 다음 값이 입력한 정수 n보다 작은 경우,
fibonacciNumbers.append(add) # 수열을 추가해주고,
i+=1 # i 값을 증가시킨다.
else: # 다음 값이 입력한 정수 n보다 큰 경우,
break # 반복문을 종료한다.
print(fibonacciNumbers) # 완성된 수열을 출력한다.
n = input("어느 값까지 피보나치 수열을 구할까요?")
seq = [0,1]
i = 1
while i < int(n):
i = seq[-1] + seq[-2]
if i < int(n):
seq.append(i)
print(seq)
def Fibo(n):
if n == 1 : return 0
elif n == 2 : return 1
return Fibo(n-1)+Fibo(n-2)
_input = int(input())
i = 1
while( Fibo(i) <= _input) :
print(Fibo(i), end=' ')
i+=1
// Rust
use std::str::FromStr;
fn main() {
// command line입력을 u32 type으로 변환
let n = std::env::args().skip(1).next().unwrap();
let n = usize::from_str(&n).unwrap();
fibonacci() //전체 피보나치 수열을 주는 iterator
.filter(|&i| i<=n) //n이하만 주는 iterator
.for_each(|j| { //각 Item에 대해 인쇄
println!("{}", j);
});
}
fn fibonacci() -> impl Iterator
let mut state = (0, 1);
vec![0].into_iter().chain(
std::iter::from_fn(move || {
state = (state.1, state.0 + state.1);
Some(state.0)
})
)
}
public static void main(String[] args) {
List<Integer> arr = new ArrayList<Integer>();
Scanner scan = new Scanner(System.in);
int sum = 0;
int cnt1 = 0;
int cnt2 = 1;
int breakNum = scan.nextInt();
for (int i = 0; i < 2; i++) {
arr.add(i);
}
while (true) {
sum = 0;
sum = arr.get(cnt1++)+arr.get(cnt2++);
if(sum > breakNum) {
break;
}
arr.add(sum);
}
System.out.println(arr.toString());
}
value = int(input('Input an integer'))
n0 = 0
n1 = 1
n2 = 0
print (n0,',', n1, end ='')
while n1 + n0 <= value:
print(', ', end = '')
n2 = n1 + n0
n0 = n1
n1 = n2
print(n2, end ='')
def Fibonacci(n):
fib=[0, 1]
while(True):
temp=fib[-1]+fib[-2]
fib.append(temp)
if temp>n:
break
return fib
print(Fibonacci(10000))
num = int(input("숫자 입력: "))
pibos = [0,1]
for i in range(2, num):
pibo = pibos[i-1] + pibos[i-2]
if pibo <= num:
pibos.append(pibo)
else:
break
print(pibos)
previous=0
current=1
i=1
n=input('정수 입력 : ')
while i<=int(n):
print(current)
temp = previous
previous = current
current = current + temp
i = i + 1
def fib(n): if n == 0: return 0 elif n == 1 or n == 2: return 1 else: return fib(n-1) + fib(n -2)
for i in range(0,11): print(fib(i))
x = [0, 1]
def fi(n):
i = 2
while True:
a = int(x[int(i-2)]) + int(x[int(i -1)])
x.append(int(a))
i = i + 1
if a >= n:
x.pop()
break
print(x)
def Fibonacci_fsequence(num):
result = [0, 1]
while result[-1] < num:
result += [result[-1] + result[-2]]
result.pop()
print(result)
print('인풋을 정수 n으로 받았을때, n 이하까지의 피보나치 수열을 출력하는 프로그램 입니다.')
num = input('정수 n을 입력하세요. : ')
Fibonacci_fsequence(int(num))
def fibonacci(n):
answer = [0, 1]
running = True # 실행 변수
while running:
if (answer[-1]+answer[-2]) <= n: # answer 리스트의 -1번째, -2번째를 더한 수가 입력보다 작으면
answer.append(answer[-1]+answer[-2]) # 두 숫자를 더해서 리스트에 추가
elif (answer[-1]+answer[-2]) > n: # 입력보다 크면
print(answer) # 지금까지 저장된 리스트를 출력하고
return answer
running = False # while문 종료
fibonacci(34) # [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
재밌게 풀었습니다~
max_val = int(input("정수 입력:"))
Fibo = [0,1]
for i in range(0,max_val+1):
next_val = Fibo[i] + Fibo[i+1]
if next_val <= max_val:
Fibo.append(next_val)
else:
break
print(Fibo)
def fibo(n):
a, b = 0, 1
for i in range(n):
yield a
a, b = b, a+b
n = int(input('>> '))
fib = fibo(n)
for i, j in enumerate(fib):
print('{}'.format(j), end = ' ')
# 피보나치 수열이란, 첫 번째 항의 값이 0이고 두 번째 항의 값이 1일 때, 이후의 항들은 이전의 두 항을 더한 값으로 이루어지는 수열을 말한다.
# 예) 0, 1, 1, 2, 3, 5, 8, 13
# 인풋을 정수 n으로 받았을때, n 이하까지의 피보나치 수열을 출력하는 프로그램을 작성하세요
n = int(input("정수 n을 입력하세요 : "))
seq_fibo = [0, 1]
a, b = seq_fibo
while b <= n:
a += b
if a > n:
break
else:
a, b = b, a
seq_fibo.append(b)
print(seq_fibo)
def phi(n): if n == 1: return (0) elif n == 2: return (0,1) else: i = 2 a = 0 b = 1 li=[0,1] while i < n: i += 1 a = a + b li.append(a) i += 1 if i <= n: b = b + a li.append(b) return(li) print(phi(9))
def fib(n): if n == 1: return (0) elif n == 2: return (0,1) else: a = 0 b = 1 li=[0,1] while a < n and b < n: a = a + b if a<n: li.append(a) b = b + a if b<n: li.append(b) return(li) print(fib(119))
number = int(input("정수를 입력하세요"))
a = [0,1]
for i in range(number):
if i > 0 :
a.append(a[i - 1] + a[i] )
if a[-1] > number :
del a[-1]
break
print(a)
n = int(input('입력:'))
a = 0
b = 1
while True:
a += b
b += a
if b > n:
result = a
break
elif a + b > n:
result = b
break
else:
continue
print(result)
아...! 수열의 마지막 숫자 구하는 거인 줄... ㅜㅜ
a = [0, 1]
n = int(input('양의 정수를 입력하시오 : '))
while True:
b = a[-2] + a[-1]
a.append(b)
if (a[-2] + a[-1]) > n:
break
print(a)
def phi(n):
if n==1 or n==2:
return (1)
return(phi(n-1)+phi(n-2))
print(phi(10))
n=int(input("#"))
i=1
n1=0
n2=1
print(n1,n2,end=" ")
while i<n:
i+=1
n3=n1+n2
n1=n2
n2=n3
print(n3,end=" ")
def phi(n):
if n==1 or n==2:
return (1)
return(phi(n-1)+phi(n-2))
print(phi(10))
n=int(input("#"))
i=1
n1=0
n2=1
print(n1,n2,end=" ")
while i<n:
i+=1
n3=n1+n2
n1=n2
n2=n3
print(n3,end=" ")
``````{.python}
# n=int(input("#"))
# n1=0
# n2=1
# n3=0
# print(n1,end=" ")
# while n3<=n:
# n3=n1+n2
# print(n2, end=" ")
# n1=n2
# n2=n3
N = int(input("정수를 입력하세요:"))
a = 0 #홀수항
b = 1 #짝수항
sequence = [a, b]
while True:
sequence.append(sequence[-2]+sequence[-1])
if sequence[-1]>N:
sequence.pop(-1)
break
print(sequence)
자바로 풀어 봤습니다.
import java.util.Scanner;
import java.util.ArrayList;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
ArrayList<Integer> Fibonacci = new ArrayList<>(Arrays.asList(0, 1));
int inputData, m, n, i=0;
while(true) {
System.out.println("양의 정수를 입력하시오:");
inputData = scan.nextInt();
if(inputData>0) {
break;
}else {
System.out.println("잘못된 정수를 입력하셨습니다. 다시 입력하세요.\n");
}
}
while(true) {
m = Fibonacci.get(i);
n = Fibonacci.get(i+1);
if(m+n>inputData) {
break;
}else {
Fibonacci.add(m+n);
i++;
}
}
System.out.println(String.format("%d 까지의 피보나치 수열은 다음과 같습니다.\n", inputData)+Fibonacci);
}
}
n= input('숫자를 넣으세요 : ')
a= [0,1]
b=0
for i in range(1,n):
if b < n:
b= a[i-1]+a[i]
a.append(b)
for item in a:
if item > n:
a.remove(item)
print(a)
sequence_list = []
n = int(input("n의 값을 설정하시오: "))
for i in range(n):
if sequence_list == []:
sequence_list.append(0)
elif sequence_list == [0]:
sequence_list.append(1)
else:
sequence_list.append(sequence_list[-1] + sequence_list[-2])
print(sequence_list)
파이썬으로 풀었습니다
---- JAVA ----
import java.util.Scanner;
public class Fibonacci
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
System.out.print("피보나치 수열을 몇번 까지 구하시겠습니까? : ");
int userAnser = in.nextInt();
// int maxNumber = 10;
int firstNumber = 0;
int secondNumber = 1;
int sum = 0;
for(int i = 0; i < userAnser; i++)
{
sum = firstNumber + secondNumber;
firstNumber = secondNumber;
secondNumber = sum;
System.out.print(sum + " ");
}
in.close();
}
}
list_1 = [0, 1]
def list_plus(list_1):
num = len(list_1)
list_1.append(int(list_1[num-1]) + int(list_1[num-2]))
return list_1
n = int(input("사용자 번호:"))
while True:
list_plus(list_1)
if list_1[len(list_1)-1] > n:
break
list_1[len(list_1)-1] > n
list_1.pop()
print(list_1)
초봅니다....
n=int(input("피보나치 수열을 반환할 숫자를 입력하세요 : "))
m=[0,1]
while True :
a = m[-1]+m[-2]
if a <= n : m.append(a)
else : break
print(m)
{.python}
n = int(input("input number = "))
fibonacci = [0, 1]
for i in range (n-2): fibonacci.append(fibonacci[i]+fibonacci[i + 1])
print(fibonacci)
def fibo(ui):
fb = [0, 1]
while fb[-1]+fb[-2] <= ui:
fb.append(fb[-2] + fb[-1])
return fb
ui = int(input("n 이하의 피보나치 수열을 출력합니다. n 입력 >> "))
if ui == 0:
print([0])
else: print(fibo(ui))
파이썬 3.8.5
n = int(input("enter n:"))
result = [0, 1]
while True:
lastnum = int(result[-1]) + int(result[-2])
if lastnum <= n:
result.append(lastnum)
if lastnum > n:
break
print(result)
python
n = int(input("정수를 입력하시오: "))
fibonacci = [0,1]
i = 0
while fibonacci[-1] <= n:
fibonacci.append(fibonacci[i]+fibonacci[i+1])
i+=1
print(fibonacci[:-1])
n = int(input("정수를 입력하시오:"))
def fibo(n):
if n == 1 or n == 2:
return 1
else:
return fibo(n-1) + fibo(n-2)
print(fibo(n))
i=input("원하는 숫자를 입력하시오. :")
ia=int(i)
result=[]
for a in range(0,ia):
#a1=a-1
if len(result)<2:
result.append(a)
elif len(result)>=2 and (result[-1]+result[-2])<=ia:
result_tem=result[-1]+result[-2]
result.append(result_tem)
a=result_tem
public class FibonacciSequence {
public String solve(int num) {
return Arrays.toString(this.solveFibonacciNumber(num));
}
// === private ===
private Integer[] solveFibonacciNumber(int num) {
List<Integer> result = new ArrayList<>();
int begin = 0;
int prev = 1;
int next = 0;
result.add(begin);
while (next <= num) {
result.add(prev);
next = begin + prev;
begin = prev;
prev = next;
}
return result.toArray(Integer[]::new);
}
}
package test;
import java.util.Arrays;
import java.util.List;
public class Fibo {
public static void main(String[] args) {
int[] fibo = new int[30];
fibo[0] = 0;
fibo[1] = 1;
for (int i = 2; i < fibo.length; i++) {
fibo[i] = fibo[i-2] + fibo[i-1];
}
System.out.println(Arrays.toString(fibo));
}
}
user_in = int(input())
x=[0,1]
while True:
if x[-1]+x[-2]>user_in:
break
else:
x.append(x[-1] + x[-2])
print(x)
def fibo(n, last):
if n==0:
global arr
arr=[]
arr.append(0)
elif n==1:
arr.append(1)
else:
arr.append(arr[n-2]+arr[n-1])
if arr[n]>last:
arr.pop()
print(arr)
else:
fibo(n+1,last)
fibo(0,int(input('정수 n을 입력 >> ')))
import java.util.Scanner;
public class up006 { public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("n이하 까지의 피보나치 수열을 출력하겠습니다.\n정수 n을 입력하세요.");
int num = scan.nextInt();
pibonaci(num);
}
private static void pibonaci(int n) {
int num1 = 0;
int num2 = 1;
int temp = 0;
System.out.print(num1 + ", ");
for(int i=0; i<n; i++) {
System.out.print(num2 + ((i==(n-1))? " ": ", "));
temp = num2;
num2 = num1 + num2;
num1 = temp;
}
}
}
n = int(input('정수를 입력하세요. : '))
수열 = [0, 1]
for i in range(2, n):
수열.append(수열[i-1] + 수열[i-2])
print(', '.join(str(s) for s in 수열))
Python. 마지막 1, 2번째 수를 더한 후 해당 수를 n과 비교하여 결과에 추가하는 것이 포인트였던 것 같습니다.
#fibonacci.py
#인풋을 정수 n으로 받았을때, n 이하까지의 피보나치 수열(0,1,1,2,3,5,8...)을 출력하는 프로그램을 작성하세요.
def fib(n): #입력된 임의의 숫자 n 이하의 피보나치 수열을 출력하는 함수 fib를 생성
result=[0, 1] #최초의 수열 [0, 1]을 설정
while True:
temp=(int(result[-2])+int(result[-1])) #result의 끝에서 2번째 수와 마지막 수를 더하여 temp로 지정
if temp<n:
result.append(temp) #temp의 수가 인풋 n보다 작을 경우 result의 끝에 추가
else:
break #temp의 수가 인풋 n보다 클 경우 함수 빠져나감
return result
print(fib(30))
#결과 : [0, 1, 1, 2, 3, 5, 8, 13, 21]
user_input = int(input('input : '))
x = [0,1]
i = 0
while True:
if x[i] + x[i+1] <= user_input:
x.append(x[i] + x[i+1])
i += 1
else:
break
print(x)
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("배열의 개수를 입력하세요.");
int num = sc.nextInt();
int[] arr = new int[num];
System.out.println("첫번째 정수를 입력하세요.");
arr[0] = sc.nextInt();
System.out.println("두번째 정수를 입력하세요.");
arr[1] = sc.nextInt();
for(int i=0; i<arr.length-2; i++) {
arr[i+2] = arr[i]+arr[i+1];
}
System.out.println(Arrays.toString(arr));
}
def fibo(n):
if n <= 1:
return 0
elif n == 2:
return 1
return fibo(n-1) + fibo(n-2)
n = int(input())
list = []
for i in range(1, n+1):
list.append(fibo(i))
print(list)
Python
def p(n):
pivot = 0
list = [0,1]
for i in range(1,n):
pivot = list[i] + list[i-1]
if pivot < n :
list.append(pivot)
else:
break
return list
n = int(input("좋아하는 수를 넣어주세요.")) pibonacci = [0,1] while pibonacci[-1] <= n: pibonacci.append(pibonacci[-1] + pibonacci[-2]) del pibonacci[-1] print(pibonacci)
def fib(n): result = []
a, b = 0, 1
while True:
result.append(a)
a, b = b, a + b
if b >= n: # 찾은 피보나치가 인수값보다 크면 while 문을 빠져나온다.
break
return result
fibo_list = fib(150) # fibo함수의 인수값보다 작은 수의 피보나치 수열을 찾음
for i in fibo_list: print(i)
j=0
back=[]
asp=0
plus=0
n=int(input("n1:"))
for i in range(n):
if j==0:
print(0)
print(1)
print(1)
j=1
back.append(1)
back.append(1)
plus=back[1]+back[0]
if plus>n:
breakz
print(back[1]+back[0])
plus=plus+back[1]+back[0]
asp=back[1]+back[0]
back[0]=back[1]
back[1]=asp
n = int(input('정수 입력'))
pibo =[0, 1]
if n == 0:
pibo =[0]
elif n == 1: #n은 1일때 [0,1,1]까지해야하는지 [0,1]로 해야하는지 의문이었음.
pibo =[0,1,1]
elif n>0 and n!=1:
while pibo[-1] < n:
pibo.append(pibo[-1]+pibo[-2])
if pibo[-1] > n:
pibo.pop()
elif n == -1:
pibo =[0,-1,-1]
elif n<0 and n!=-1:
pibo=[0,-1]
while pibo[-1] > n:
pibo.append(pibo[-1]+pibo[-2])
if pibo[-1] < n:
pibo.pop()
print(pibo)
def fibo(n):
if n==0 : return 0
elif n <= 2 : return 1
return fibo(n-1)+fibo(n-2)
n = int(input())
for i in range(n):
print(f"{i} : {fibo(i)}")
JAVA
package temp; import java.util.Scanner; public class FibonacciArray { public static void main(String[] args) { int a1= 0 , a2= 1, a3=0, n;
System.out.print("n Interger Input : ");
Scanner scn = new Scanner(System.in);
n = scn.nextInt();
System.out.print(a1+", "+a2+", ");
while (a1+a2<=n) {
a3 = a1 + a2;
a1 = a2;
a2 = a3;
System.out.print(a3);
if(a1+a2<=n)
System.out.print(", ");
}
}
}
pibo_list = [0, 1]
while(1):
max_len = input('정수 n : ')
try:
max_len = int(max_len)
break
except:
print("잘못된 입력입니다.")
pibo_num = 0
i = 0
while(1):
pibo_num = pibo_list[i] + pibo_list[i + 1]
if pibo_num < max_len:
pibo_list.append(pibo_num)
i += 1
else:
break
print(pibo_list)
number = int(input())
a = 0
b = 1
while a <= number:
print(a, end=' ')
if b > number:
break
print(b, end=' ')
a += b
b += a
def pivonachi(n):
arr = [0,1]
for i in range(n+1) :
arr.append(arr[i] + arr[i+1])
print(arr)
n = int(input())
pivonachi(n)
sequence = [0,1]
num = int(input("Enter Num:"))
for i in range(2,num):
sequence.append(sequence[i-1]+sequence[i-2])
print(sequence)
def fibo(n):
if n == 0:
return 0
elif n == 1:
return 1
return fibo(n-1) + fibo(n-2)
number = int(input('숫자를 입력하시오'))
for n in range(number):
pibonum = fibo(n)
if pibonum <= number:
print(pibonum, end=', ')
else:
break
number = int(input("정수를 입력하세요"))
list = []
def num(n):
first = 0
second = 1
if n == 0:
print(list)
elif n == 1:
list.append(n)
print(list)
elif n > 1:
list.append(first)
list.append(second)
while first+second <= n:
third = first+second
list.append(third)
first = second
second = third
print(list)
num(number)
a={1:0,2:1} def fibonacci(n): if n in a: return a[n] else: output = fibonacci(n-1)+fibonacci(n-2) a[n]=output return output
b= int(input("원하는 정수를 입력하세요: ")) for i in range(1,b+1): print(fibonacci(i))
def fib(n):
fib_seq = []
a, b = 0, 1
while a <= n:
fib_seq.append(a)
a, b = b, a+b
return fib_seq
n = int(input())
print(fib(n))
pibolist = [0, 1]
idx = int(input())
for i in range(0, idx+1):
if pibolist[-1] > idx:
del pibolist[-1]
break
else:
pibolist.append(pibolist[i] + pibolist[i+1])
print(pibolist)
package codingdojang;
public class Fibonacci1 { public static void main(String[] args) { int count = 8; for(int i = 0; i < count; i++){ System.out.print(fibonacci(i) + " "); } }
public static int fibonacci(int n) {
if(n <= 1){
return n;
}else{
return fibonacci(n-2) + fibonacci(n-1);
}
}
}
prev = 0
current = 1
total = 0
for total in range(n + 1):
temp = prev
prev = current
current = current + temp
total += 1
print(current)
nums = int(input("정수를 입력하세요"))
#최초값
f_nums = [0,1]
#두 수의 합
result = 0
while True:
result = f_nums[-2] + f_nums[-1]
#마지막 두 수의 합이 입력받은 수보다 작을 때만 리스트에 추가
if result <= nums:
f_nums.append(result)
#아니면 스탑
else:
break
#수열 출력
print(f_nums)
가장 기본적인 풀이입니다.
total=1
save=0
before=1
a=input("수를 입력하세요")
while total>=a:
save=total
total=before+total
before=save
print("결과값은 " +total+ "입니다.")
여기서 total을 변하게 한 뒤 before를 원래 total로 바꾸기 위해 save 변수를 넣었습니다.
n = int(input("n: "))
result = []
for i in range(n):
if i == 0:
result.append(0)
elif i == 1:
result.append(1)
else:
result.append(result[i-1] + result[i-2])
print(result)
def fi(n):
result = []
for i in range(n+1):
if i == 0:
result.append(0)
elif i == 1:
result.append(1)
else:
result.append(result[i-1] + result[i-2])
if result[i] >= n and not result[i] == n:
result.pop()
break
return result
def fibo(n): r = [0,1]; [r.append(r[i-2]+r[i-1]) for i in range(2,n)]; return r;
fibo(10)
> [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
n = int(input())
a1 = 0
a2 = 1
a3 = a1 + a2
print(a1)
print(a2)
while a3 <= n :
print(a3)
a1 = a2
a2 = a3
a3 = a1 + a2
var x = [0, 1];
var y = 10;
for (let i = 0; i < y; i++) {
if (x != 0) {
x.push(x[i] + x[i + 1]);
}
}
console.log(x);
def fibonacci(n) :
number_list2 = [0, 1]
i = 0
j = 1
while j < n :
j = number_list2[i] + number_list2[i+1]
number_list2.append(j)
i += 1
return number_list2
n = int(input())
fibonacci = []
for i in range(1, n+1):
if i == 1:
fibonacci.append(0)
print(0)
if i == 2:
fibonacci.append(1)
print(1)
if i > 2:
fibonacci.append(fibonacci[i-2] + fibonacci[i-3])
print(fibonacci[i-1])
fib = [0, 1]
fibNum = int(input("숫자를 입력하시오"))
fibleng = len(fib)-1
fibsum = fib[fibleng-1] + fib[fibleng]
while fibsum < fibNum:
fib.append(fibsum)
fibleng = len(fib)-1
fibsum = fib[fibleng-1] + fib[fibleng]
print(fib)