本博文最先發(fā)表于知乎網(wǎng)
程序設(shè)計最為常用的計算方法有枚舉(Enumeration)、遞推和遞歸(Recursion)等。暴力搜索(Brute--force search)屬于枚舉法。
迭代法(Iteration)也是最為常用的一種方法。
迭代法
1.1 階乘之和
問題描述
計算S=1!+2!+…+n!
輸入
一個正整數(shù)n,滿足1≤n≤10。
輸出
階乘之和S的值。
樣例輸入
3
樣例輸出
9
解題程序
/* PB1.1 求階乘和 */
#include <stdio.h>
int main(void)
{
int n, a = 1, sum = 0;
scanf("%d", &n);
for (int i = 1; i <= n; i++)
a *= i, sum += a;
printf("%d\n", sum);
return 0;
}
1.2 數(shù)列求和
問題描述
計算S=1-1/2+1/3-1/4+…+1/99-1/100之和。
輸入
無。
輸出
數(shù)列前100項之和S,小數(shù)點保留3位。
樣例輸入
無
樣例輸出
0.688
解題說明
這個題計算數(shù)列的前100項之和,解題程序代碼很容易改成根據(jù)指定的項數(shù)n,計算數(shù)列之和。
解題程序
/* PB1.2 數(shù)列求和 */
#include <stdio.h>
#define N 100
int main(void)
{
int i;
double sum = 0, sign = 1;
for(i = 1; i <= N; i++)
sum += sign * (1.0 / i), sign = -sign;
printf("%.3f\n", sum);
return 0;
}
1.3 數(shù)位整數(shù)和
問題描述
計算S=d+dd+ddd+dddd+dd…d(n個d)的值。其中d為非零十進制數(shù)字,即1-9之一。
例如:
d=2且n=5時,計算5個由2組成的數(shù)之和S=2+22+222+2222+22222 ( 此時 共有5個數(shù)相加)。
d=5且n=3時,計算3個由5組成的數(shù)之和S=5+55+555的值,算出S=615。
輸入
空格隔開的d和n,n不大于15,其含義如問題描述。
輸出
數(shù)位整數(shù)和S。
樣例輸入
5 3
樣例輸出
615
解題說明
用迭代計算是好的做法。
解題程序文章來源:http://www.zghlxwxcb.cn/news/detail-734132.html
/* PB1.3 數(shù)位整數(shù)和 */
#include <stdio.h>
int main(void)
{
int d, n, i;
long long ai = 0, sum = 0;
scanf("%d%d", &d, &n);
for (i = 1; i <= n; i++)
ai *= 10, ai += d, sum += ai;
printf("%lld\n", sum);
return 0;
}
1.4 數(shù)列求和
問題描述
計算S=1 + 1 / 3 + (1 * 2) / (3 * 5) + (1 * 2 * 3) / (3 * 5 * 7) + … + (1 * 2 * 3 * … * n) / (3 * 5 * 7 * … * (2 * n + 1))之和。
輸入
一個正整數(shù)n。
輸出
數(shù)列前n項之和S,小數(shù)點保留8位。
樣例輸入
4
樣例輸出
1.54920635
解題說明
這個題的關(guān)鍵是找出規(guī)律,即前后項之間的數(shù)學關(guān)系,好用迭代計算來實現(xiàn)。
解題程序文章來源地址http://www.zghlxwxcb.cn/news/detail-734132.html
/* PB1.4 數(shù)列求和 */
#include <stdio.h>
double sum(int n)
{
double sum = 1, a = 1, b = 1, odd = 1;
int i;
for (i = 1; i <= n; i++) {
a *= i;
b *= (odd += 2);
sum += a / b;
}
return sum;
}
int main(void)
{
int n;
scanf("%d", &n);
printf("%.8f\n", sum(n));
return 0;
}
到了這里,關(guān)于程序設(shè)計基礎(chǔ)實例大全(1.迭代法)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!