递推是计算机中的一种常用算法。它是按照一定的规律来计算序列中的每个项,通常是通过计算机前面的一些项来得出序列中的指定项的值。其思想是把一个复杂的庞大的计算过程转化为简单过程的多次重复,该算法利用了计算机速度快和不知疲倦的机器特点。
计算1+2+3+…+100的值
1 2 3 4 5 6 7 8 9 10 | #include <stdio.h> int main(int argc, char *argv[]) { int i, sum = 0; for(i=1; i<=100; i=i+1) { sum = sum + i; } printf("%d\n", sum); return 0; } |
编写程序,输出Fibonacci数列的前30项(每行输出5项)。
斐波纳契数列(Fibonacci Sequence),又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从1960年代起出版了《斐波纳契数列》季刊,专门刊载这方面的研究成果。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include <stdio.h> int main(int argc, char *argv[]) { int i=0; int f1=0, f2=1, f3; printf("%10d%10d",f1,f2); for(i=3; i<=30; i++) { f3=f1+f2; printf("%10d",f3); f1=f2; f2=f3; if(i%5==0) printf("\n"); } return 0; } |
如果没有计算器,我们如何求2的平方根?
可以先猜测一个数,比如1.5,然后用2除以这个数字。如果我们猜对了,则除法的结果必然与我们猜测的数字相同。我们猜测的越准确,除法的结果与猜测的数字就越接近。
根据这个原理,只要我们每次取猜测数和试除反馈数的中间值作为新的猜测数,肯定更接近答案!这种计算方法叫做“迭代法”。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include <stdio.h> #include <math.h> int main(int argc, char *argv[]) { double x, a, b; scanf("%lf", &x); a = 0; b = x; while(fabs(a-b)>1E-15) { a = (a+b)/2; b = x/a; } printf("%.6lf\n", a); return 0; } |
1 |
1 |