// Tribonacci 수 T(n)은 Fibonacci와 유사함, 여기서 T(n) = T(n-1) + T(n-2) + T(n-3), T(1)=T(2)=1, T(3)=2.
// 첫 20개 Tribonacci 수를 인쇄하는 프로그램 Tribonacci를 작성.
하라는데,, 이 밑에 코드는 피보나치에 관한 힌트 코드인데 참고하라고 올려주셨고,,
근데 저는 트리보나치도 처음 들어보고,, 검색해도 잘 모르겠고 자바도 초본데,...
시작을 어떻게 할지 모르겠는데 알려주세요ㅠㅁㅠ
```
/**
* Tribonacci
*/
public class Tribonacci {
public static void main(String[] args) {
int n = 3;
int fn;
int fnMinus1 = 1;
int fnMinus2 = 1;
int nMax = 20;
int sum = fnMinus1 + fnMinus2;
double average;
System.out.println("The first" + nMax + "Fibonacci numbers are:");
while (n <= nMax) {
++n;
fnMinus2 = fnMinus1;
fnMinus1 = fn;
}
}
}
```
sehongpark님의 답변
## 반복문과 조건문 연습
아래 링크를 확인하세요.
+ 트리보나치 (http://cloudstudying.kr/codes/1412)
pms5076님의 답변
실례합니당........... 주신 링크 참조해서 만들어봐쓴ㄴ데,, 저는 왜 오류가 날까요ㅠㅠ
// Tribonacci 수 T(n)은 Fibonacci와 유사함, 여기서 T(n) = T(n-1) + T(n-2) + T(n-3), T(1)=T(2)=1, T(3)=2.
// 첫 20개 Tribonacci 수를 인쇄하는 프로그램 Tribonacci를 작성.
```
package javaReportChapter1;
public class tribonacci {
public static void main(String[] args) {
// TODO Auto-generated method stub
int n = Integer.parseInt(args[0]);
printTribonacciNumbers(n);
}
private static void printTribonacciNumbers(int nMax) {
int fnMinus1 = 2;
int fnMinus2 = 1;
int fnMinus3 = 1;
int i = 1;
while (i <= nMax) {
int fn = fnMinus1 + fnMinus2 + fnMinus3;
switch (nMax) {
case 1:
fn = 1;
break;
case 2:
fn = 1;
break;
case 3:
fn = 2;
break;
default:
break;
}
fnMinus3 = fnMinus2;
fnMinus2 = fnMinus1;
fnMinus1 = fn;
System.out.printf("T(%2d) = %6d\n", i++, fn);
}
}
}
```
sehongpark님의 답변
에러가 어떻게 나는지 알려주시겠어요?
pms5076님의 답변
디버깅을 하면
int n = Integer.parseInt(args[0]);
이 부분이 문제라고 나와요!
sehongpark님의 답변
int n = 20; 으로 바꿔보세용
pms5076님의 답변
앗 감사합니다! 실행은 되구요, 결과값이 이렇게 나오는데 ,,
위에 올려주신 링크의 결과값이랑 달라요ㅠ-ㅠ
T( 1) = 4
T( 2) = 7
T( 3) = 13
T( 4) = 24
T( 5) = 44
T( 6) = 81
T( 7) = 149
T( 8) = 274
T( 9) = 504
T(10) = 927
T(11) = 1705
T(12) = 3136
T(13) = 5768
T(14) = 10609
T(15) = 19513
T(16) = 35890
T(17) = 66012
T(18) = 121415
T(19) = 223317
T(20) = 410744
sehongpark님의 답변
최종 코드 올려보시겠어요?
pms5076님의 답변
```
public static void main(String[] args) {
// TODO Auto-generated method stub
int n = 20;
printTribonacciNumbers(n);
}
private static void printTribonacciNumbers(int nMax) {
int fnMinus1 = 2;
int fnMinus2 = 1;
int fnMinus3 = 1;
int i = 1;
while (i <= nMax) {
int fn = fnMinus1 + fnMinus2 + fnMinus3;
switch (nMax) {
case 1:
fn = 1;
break;
case 2:
fn = 1;
break;
case 3:
fn = 2;
break;
default:
break;
}
fnMinus3 = fnMinus2;
fnMinus2 = fnMinus1;
fnMinus1 = fn;
System.out.printf("T(%2d) = %6d\n", i++, fn);
}
}
```
sehongpark님의 답변
윌리를 찾았습니다.....
변경 전
```
switch (nMax) {
```
변경 후
```
switch (i) {
```
pms5076님의 답변
헐헐 나와요 ㅠㅠㅠㅠㅠ감사합니다
근데 이거 관련 없는 질문이긴 한데,, 한 이틀전 부터 질문하기 누르면
```
NoMethodErrorin QuestionsController#new
undefined method `id' for nil:NilClass
Extracted source (around line #36):
challenge_id = code.challenge.id
end
@question = Question.new(text: text, challenge_id: challenge_id, code_id: code.id)
end
# GET /questions/1/edit
Rails.root: /home/shpark86/www/cloudstudying.kr/releases/20180921155534
Application Trace | Framework Trace | Full Trace
app/controllers/questions_controller.rb:36:in `new'
```
막 이렇ㄱ ㅔ 오류가 뜨는데 왜 이렇게 된걸까요,,? 저 이제 질문못하나요..?
sehongpark님의 답변
헉!!! 버그리포팅 감사합니다. 확인해 볼께요.
혹시 지금 질문 새로 생성하면 안되나요?
sehongpark님의 답변
와!!! 감사합니다 큰일 날뻔했네요 ㅠㅠㅠㅠㅠ
덕분에 버그 고쳤습니다~~~~~~~~~~~~₩₩
pms5076님의 답변
어? 아뇨아뇨 이제 돼요! 고맙습니다!