0<=x<=1とし、
f(x) を考えます。
f(x) は、0<=x<1/2 では2*xを返し、 1/2<=x<=1では(-2x+2)を返します。
x_n+1 = f(x_n) とし、n=0から次々と計算をさせていくプログラムをC言語で作りました。

初期値x_0 を 0<=x_0<=1 の範囲から手入力させて、適当な回数分、計算結果を出力
させています。今は100回ほど計算を行っています。

(範囲内で)どんな初期値を与えても、ある回数計算をするとxが必ず0になるのですが、
これはどうしてなのでしょうか?初期値を0.1や0.2など比較的綺麗な数値にすると、f(x)
の計算ごとに0.4と0.8の表示を繰り返します。計算回数を重ねると
0.799999、0.400002、0.800003・・・と値が崩れていき、最終的には、0.406250、0.812500、
0.375000、0.750000、0.500000、1.000000、0.000000、0.000000、...
と0に落ちてしまいます。初期値に関わらず、です。
どうしてなのでしょうか?お願いします。