天天看點

用C實作求階乘之和

昨天師父給的任務,讓寫一個多線程計算一個1000以内輸入數的階乘和的小程式。我用C語言來實作,過程都是自己想出來的,中間出過在用循環的時候采用unsigned類型判斷出錯的問題。

以下是該程式的實作,這裡隻是先把過程寫出來,還沒有用到多線程……

// methods.c
#include <stdio.h>

long double Fn(int n);

int main(void)
{
    long double sum = 0;
    int i, n;
    i = n = 0;
    printf("Please input a number: \n");
    scanf("%d", &n);
    if (n > 1000 )
	printf("ERROR!The number is too large!\nPlease try again!(0~1000)\n");
    else if (n < 0)
	printf("ERROR!The number is invalid!\nPlease try again!(0~1000)\n");
    else
    {
	for (i = 0; i <= n; i++)
	    sum += Fn(i);
	printf("The %d factorial's sum is %Lf\n", n, sum);
    }

    return 0;
}

long double Fn(int n)
{
    if (n == 0)
	return 1;
    return Fn(n - 1) * n;
}
           

利用多線程的實作,我會在月底之前寫出來。

以下是執行結果:

[img]http://dl.iteye.com/upload/attachment/0068/6477/6c1a6fe5-6716-38ec-8271-99bbb98acd29.png[/img]