G. 打印 LOGO(递归)
G. 打印 LOGO
https://blog.csdn.net/sinat_38863494/article/details/79977207
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
現(xiàn)在小學生也在學習基本的編程,課程目標是讓小學生能夠有基本的算法思想,并不涉及復雜的數(shù)據(jù)和實現(xiàn)細節(jié)與原理。
LOGO 語言就非常適合小學生學習,它通過繪圖的方式來直觀的表現(xiàn)出如何用程序代碼控制事物。例如控制臺上初始給出一個點,使用語句 FD 1/1 表示將控制臺上的點 Forward 1/1 的距離,即,向當前方向移動 1 的距離,這樣就畫出一條線段。
語句 LD 60 則表示當前朝向向左轉 60 度,接著再使用語句 FD 1/1 就畫出一條與之前的直線夾角為 120 度的一條線段,這時控制臺上就有繪制出了一條折線段。現(xiàn)在的任務是輸出一段能繪制分形的 LOGO 語言的程序代碼。
如果你還對分形不了解,下面就先介紹一下分形:分形(Fractal) 是一個幾何形狀可以分成數(shù)個部分,且每一部分都(至少近似地)是整體縮小后的形狀,即具有自相似的性質。自然界中一定程度上具有分形的性質的事物有云朵、閃電、植物根系、雪花等等。著名的科赫曲線就是一種分形,它繪制的是形態(tài)類似雪花的圖案。以下是 0 階到 3 階的科赫曲線:
要求你的程序輸出 LOGO 語句,使它畫出 N 階圖示的分形曲線。
Input
11?個數(shù)字?nn,表示圖形的階數(shù)?(0<n<10)(0<n<10)
Output
繪制圖形的 LOGO 指令
Example
input
Copy
1output
Copy
FD 1/3 LD 60 FD 1/3 LD 240 FD 1/3 LD 60 FD 1/3思路:
遞歸。
除線段外最小的部分就是Order=1時,即:
FD 1/3 LD 60 FD 1/3 LD 240 FD 1/3 LD 60 FD 1/3每一階都是把上一階當做最小的線段。每一階都是:線段—轉60度—線段—轉240度—線段—轉60度—線段。
代碼:
#include<iostream> #include<cstdio> #include<cmath> #define INF 0x3f3f3f3f using namespace std;void digui(int n,int order) //要求的階數(shù),當前階數(shù) {int length=pow(3,n); //最小線段長度(分母)if(order==1){cout<<"FD 1/"<<length<<endl;cout<<"LD 60"<<endl;cout<<"FD 1/"<<length<<endl;cout<<"LD 240"<<endl;cout<<"FD 1/"<<length<<endl;cout<<"LD 60"<<endl;cout<<"FD 1/"<<length<<endl;}else{digui(n,order-1);cout<<"LD 60"<<endl;digui(n,order-1);cout<<"LD 240"<<endl;digui(n,order-1);cout<<"LD 60"<<endl;digui(n,order-1);} }int main() {int n;cin>>n;digui(n,n);return 0; }?
總結
以上是生活随笔為你收集整理的G. 打印 LOGO(递归)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器视觉光源的分类及各种光源的特点
- 下一篇: 《令人心动的offer2》--你心动了吗