1 前回の復習と本日の学習内容

1.1 復習

前回の授業では,再帰関数について学習した.関数の定義において,自分自身を呼び出す 関数を再帰関数という.具体的には,リスト1のような階乗を計算する関数である. 階乗は,

$\displaystyle n!=n\times(n-1)\times(n-2)\times(n-3)\times\cdots\times2\times1$ (1)

であるが,漸化式を使って

$\displaystyle n!$ $\displaystyle =n\times (n-1)!\qquad($ただし,$\displaystyle 1\leqq n)$ (2)
$\displaystyle 0!$ $\displaystyle =1$ (3)

のように定義することもできる.この漸化式そのものをプログラムにすると,リスト 1のように再帰関数を使うことになる.
   1 #include <stdio.h>
   2 
   3 int kaijyo(int n);                 // プロトタイプ宣言
   4 
   5 //========== メイン関数 ================================
   6 int main(void)
   7 {
   8   int nx, result;
   9 
  10   scanf("%d", &nx);                // 整数入力
  11   result=kaijyo(nx);               // 関数呼出し
  12   printf("%d!=%d\n", nx, result);   // 計算結果表示
  13 
  14   return 0;
  15 }
  16 
  17 //========== 階乗を計算する関数(再帰呼出し)===============
  18 int kaijyo(int n)
  19 {
  20 
  21   if(n==0){
  22     return 1;
  23   }else{
  24     return n*kaijyo(n-1);
  25   }
  26 
  27 }


\fbox{実行結果}
12
12!=479001600

次の二つのことをおさえれば,再帰関数を書くことができる.

1.2 本日の学習内容

本日は,ポインターについて学習する.ポインターについては,1年生のときにそのメカ ニズムについて学習した.ここでは,後のデータ構造の学習のために,ポインターの使い 方の基礎を学ぶ.本日の学習のゴールは,以下のとおりである.

教科書 [2]のpp.114-133が本日の範囲である.



ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
平成19年5月29日


no counter