마름모꼴과 피보나치 수열을 인쇄하는 몇 가지 해법
i행에서 인쇄할 공백 개수와 *번 개수를 내놓고 for순환으로 각 줄을 순서대로 인쇄합니다
#include<stdio.h>
// 2*n-1 ,
void print1(int n)
{
int i,j;
for(i=1;i<=n;i++){// 1 n
for(j=1;j<=n-i;j++)// n-i
printf(" ");
for(j=1;j<=2*i-1;j++)// 2*i-1 *
printf("*");
printf("
");
}
for(;i<2*n;i++){// n+1 2*n-1 , (2*n-i)
for(j=1;j<=n-(2*n-i);j++)
printf(" ");
for(j=1;j<=2*(2*n-i)-1;j++)
printf("*");
printf("
");
}
}
void main()
{
int n;//n *
printf("enter n:");
scanf("%d",&n);
print1(n);
}
2. 피보나치 수열(Fibonacci Sequence)은 황금분할 수열이라고도 하는데 이런 수열을 가리킨다.
1, 2, 3, 5, 8, 13, 21,...수학에서 피보나치 수열은 다음과 같이 귀속된 방법으로 정의된다. F(0)=0, F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2, n∈N*).프로그램을 작성하여 F (20) 의 값을 출력합니다.
여기에 네 가지 다른 해법을 제시하는데 귀속과 개선된 귀속 효율에 있어 큰 차이가 있다.
#include<stdio.h>
#include<math.h>
#include<time.h>
#define MAX 100
//
int f1(int n)
{
if(n==1 || n==0)
return 1;
return f1(n-1)+f1(n-2);
}
// ,
int f2(int n)
{
//
static result[MAX]={1,1};
if(n==1 || n==0)
return 1;
if(result[n-1] == 0)
result[n-1]=f2(n-1);
if(result[n-2] == 0)
result[n-2]=f2(n-2);
return result[n-1]+result[n-2];
}
// ( )
int f3(int n)
{
int a[MAX],i;
a[1]=1;
a[0]=1;
for(i=2;i<=n;i++)
a[i]=a[i-1]+a[i-2];
return a[n];
}
//
int f4(int n)
{
int i=2,a=1,b=1,sum=1;
while(i<=n){
sum=a+b;
a=b;
b=sum;
i++;
}
return sum;
}
void main()
{
long start,end;
start=clock();
printf("f(40)==%d
",f1(40));
end=clock();
printf(" :%d ms
",end-start);
start=clock();
printf("f(40)==%d
",f2(40));
end=clock();
printf(" :%d ms
",end-start);
start=clock();
printf("f(20)==%d
",f3(20));
end=clock();
printf(" :%d ms
",end-start);
start=clock();
printf("f(20)==%d
",f4(20));
end=clock();
printf(" :%d ms
",end-start);
}
실행 결과:
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.