Processing資料(2) 再帰

10
再帰 Processing資料(2)

Transcript of Processing資料(2) 再帰

Page 1: Processing資料(2) 再帰

再帰

Processing資料(2)

Page 2: Processing資料(2) 再帰

関数について

#include<stdio.h>

int sum(int a, int b);

int main(void){ int result = 0;

result = sum(2,3); printf(“result = %d\n”,result);

return 0;}

int sum(int a,int b){ int c = 0;

c = a + b;

return c;}

Page 3: Processing資料(2) 再帰

関数について

#include<stdio.h>

int sum(int a, int b);

int main(void){ int result = 0;

result = sum(2,3); printf(“result = %d\n”,result);

return 0;}

int sum(int a,int b){ int c = 0;

c = a + b;

return c;}

main関数→sum関数

Page 4: Processing資料(2) 再帰

関数について

関数A→関数B→関数C

関数A→関数A→関数A→...

Page 5: Processing資料(2) 再帰

再帰

関数が自分自身を呼び出すこと

 →無限ループになる

  →終了条件を考える必要がある

Page 6: Processing資料(2) 再帰

Processingで再帰

Page 7: Processing資料(2) 再帰

Processingで再帰

最初に大きな円を描く

大きさを変えながら左右に円を描く

Page 8: Processing資料(2) 再帰

void setup() { size(600, 350); colorMode(HSB, 360, 100, 100); background(360); strokeWeight(2);

noLoop();}

void draw() { background(360);

draw_circle(width/2, 300, 0);}

void draw_circle(float x, float r, int level) { stroke(200); fill(level*60, 20, 100); ellipse(x, height/2, r, r);

level++;

if (r > 10.0) { draw_circle(x+r/2, r/2, level); draw_circle(x-r/2, r/2, level); }}

Page 9: Processing資料(2) 再帰

void setup() { size(600, 350); colorMode(HSB, 360, 100, 100); background(360); strokeWeight(2);

noLoop();}

void draw() { background(360);

draw_circle(width/2, 300, 0);}

void draw_circle(float x, float r, int level) { stroke(200); fill(level*60, 20, 100); ellipse(x, height/2, r, r);

level++;

if (r > 10.0) { draw_circle(x+r/2, r/2, level); draw_circle(x-r/2, r/2, level); }}

Page 10: Processing資料(2) 再帰

void setup() { size(600, 350); colorMode(HSB, 360, 100, 100); background(360); strokeWeight(2);

noLoop();}

void draw() { background(360);

draw_circle(width/2, 300, 0);}

void draw_circle(float x, float r, int level) { stroke(200); fill(level*60, 20, 100); ellipse(x, height/2, r, r);

level++;

if (r > 10.0) { draw_circle(x+r/2, r/2, level); draw_circle(x-r/2, r/2, level); }}

終了条件