dポイントプレゼントキャンペーン実施中!

初項a_0=aとし、漸化式
a_n+1=(a_n/2)+(a/2*a_n)
で与えられる数列について、aに数値を与え、a_0,a_1,•••,a_10を表示するプログラムを作成せよ。

急ぎです。ご協力おねがいします。

A 回答 (1件)

ふーん、この問題、Cでやるとしたら結構誤差がデカくなる筈なんだけど、どういう意図で出してるんですかね。


取り敢えず、検算して「誤差が大きい」って事は分かってますが、特に修正してません。
まあ、宿題の意図が分からないんで・・・・・・ですね。

/* ここから */

#include <stdio.h>

double a_n(int a, int n, double acc) {
 if (n == 0) {
  return acc;
 } else {
  return a_n(a, n - 1, (acc/2 + a/2 * acc));
 }
}

int main(void) {
 int a, i;
 printf("初期値を入力してください: ");
 scanf("%d", &a);
 for (i = 0; i < 11; i++) {
  printf("a_%d: %lf\n", i, a_n(a, i, (double)a));
 }
 return 0;
}
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!