関数の再帰と反復
836 ワード
再帰的な欠陥:より多くの回数のスタックプロセスを実行すると、演算量が過大になります.しかし、それぞれの末尾の再帰は循環と書くことができます(土ではないという言い方で反復します)
fabonacii数列は反復で実現されます.
反復による乗算:
fabonacii数列は反復で実現されます.
#include<stdio.h>
int Fibonacii(int n)
{
int temp = 0;
int a = 1;//
int b = 1;
if(n <= 2)
return 1;
while(n > 2)
{
temp = a + b;
a = b;
b = temp;// a = temp; b = a; a !=1 b
n--;// ab
}
return temp;
}
int main()
{
printf("%d
",Fibonacii(6));
return 0;
}
反復による乗算:
#include<stdio.h>
int fac(int n)
{
int ret = 1;
while(n)
{
ret = ret * n;
n--;// ret = 1*n,ret = n*(n-1) ....
}
return ret;
}
int main()
{
printf("%d
",fac(3));
return 0;
}