C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: 再帰的データ構造


(過去ログ 55 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■31168 / inTopicNo.1)  再帰的データ構造
  
□投稿者/ dorako (1回)-(2009/01/16(Fri) 00:19:19)

分類:[Java] 

2009/01/16(Fri) 01:18:32 編集(投稿者)
下記のプログラムを実行したところ(1)は3,(2)は2,(3)は0になったのですが何故そうなるのかがわかりません。
考え方を教えてください。

class Cell{
int data;
Cell next;
}

class sample{
   public static void main(String[] args){
      Cell a=new Cell(); Cell b = new Cell();
      Cell c=new Cell(); Cell d = new Cell();

      a.data=3;
      a.next=c;
      b.data=2;
      b.next=a;
      c.data=1;
      c.next=b;
      d.data=0;
      d.next=d;

      System.out.println("(1)"+b.next.data);
      System.out.println("(2)"+a.next.next.next.next.next.data);
      System.out.println("(3)"+d.next.next.data);
   }
}

引用返信 編集キー/
■31169 / inTopicNo.2)  Re[1]: 再帰的データ構造
□投稿者/ のりよし (3回)-(2009/01/16(Fri) 00:58:31)
たまたま同時刻に書き込みしたみたいなので回答してみます。
(ソースコードは見やすく書いたほうがよいですよ。
 投稿モードを図表モード選択にして書くとよいみたいです。)

class Cell{
	int data;
	Cell next;
}
class sample{
	public static void main(String[] args){
		Cell a = new Cell();
		Cell b = new Cell();
		Cell c = new Cell();
		Cell d = new Cell();
		a.data=3;
		a.next=c;
		b.data=2;
		b.next=a;
		c.data=1;
		c.next=b;
		d.data=0;
		d.next=d;
		System.out.println("(1)"+b.next.data);
		System.out.println("(2)"+a.next.next.next.next.next.data);
		System.out.println("(3)"+d.next.next.data);

(1)は3
 b.nextはaで、a.dataを出力しているため。
 (b.next).dataの括弧内がそっくりそのままaになると考えてみてください。
 a.dataを出力していることと同じですよね。 
 以降の(2),(3)も同様に一個ずつ読み替えて考えます。
(2)は2
 a.nextはcで、c.nextはbで、b.nextはaで、
 a.nextはcで、c.nextはbで、結局b.dataを出力しているため。
(3)は0
 d.nextはd自身で、d.nextはd自身で、d.dataを出力しているため。
 (あと何回 .next.next.next… を書いてもやっぱり結果は0です。)

わかりづらかったらごめんなさい。

引用返信 編集キー/
■31170 / inTopicNo.3)  Re[2]: 再帰的データ構造
□投稿者/ dorako (2回)-(2009/01/16(Fri) 01:21:47)
2009/01/16(Fri) 12:03:46 編集(投稿者)

No31169 (のりよし さん) に返信
ご指摘ありがとうございます。編集してみました。
とてもわかりやすい解説ありがとうございました。
お陰様で良く理解することができました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -