課題 5: 関数、再帰呼び出し (2003年10月16日)

例題 1: 最大公約数を求めるプログラム

#include <stdio.h> int gcd(int x, int y); int main(void) { int a, b; printf("input a "); scanf("%d",&a); printf("input b "); scanf("%d",&b); printf("GCD = %d\n", gcd(a, b)); return 0; } int gcd(int x, int y) { if(y != 0) return gcd(y,x%y); else return x; }

例題 2 :整数の階乗を求めるプログラム

#include <stdio.h> int fact(int n); int main(void) { int n; printf("input n "); scanf("%d",&n); printf("%d! = %d\n", n, fact(n)); return 0; } int fact(int n) { if (n > 0) return(n * fact(n - 1)); else return 1; }

課題 1

例題のプログラムを参考に,再帰を使ってフィボナッチ(Fibonacci) 数列 Fnを求めるプログラムを作成せよ. なお,フィボナッチ数列 Fn
  • F0 = 0
  • F1 = 1
  • Fn+2= Fn+1 + Fn, if n >= 0
で表される数列である.
この関数を使って、F30を計算して、プリントアウトするプログラ ムを作り、結果も提出すること。

課題 2

正の整数を入力し、その値を2進数で出力するプログラムを作成しなさい。