首页 > 学院 > 开发设计 > 正文

(区别)递归与迭代&&递归与递推&&迭代与递推

2019-11-08 01:20:03
字体:
来源:转载
供稿:网友

———————————————————————————————

———————————————————————————————

****************************递归与迭代的区别*******************************

(1)分别用递归法和迭代法求阶乘

#include <stdio.h>// 递归计算阶乘long factorial_recursion(int n){    if(n<=0){        return 1;    }else{        return n * factorial_recursion(n-1);    }}// 迭代计算阶乘long factorial_iteration(int n){    int result = 1;    while(n>1){        result *= n;        n--;    }    return result;}

(2)分别用递归法和迭代法求斐波那契数列
 //使用递归的方法实现long long fibonacci_recursive(int n) {	if (n <= 0)		return 0;	if (n == 1)		return 1;	return fibonacci_recursive(n - 2) + fibonacci_recursive(n - 1);}//使用迭代的方法实现long long fibonacci_iteration(int n) {	int result[2] = { 0, 1 };	int i = 2;	long long num = 0;	if(n < 2) {		return result[n];	}	long long fib_minusone = 1;	long long fib_minustwo = 0;	for(;i <=n;i++) {		num = fib_minusone + fib_minustwo;		fib_minustwo = fib_minusone;		fib_minusone = num;	}	return num;}——————————————————————————————————————————————————————————————****************************递归与递推的区别*******************************递推就是从前往后推递归就是从后往前推,有个回溯的过程举个例子,数列:1,1,2,3,5,8,13,21,……要求第100项,就得从前两项开始推,直到第100项,是一个递推的过程
f[0]=f[1]=1;for(i=2;i<101;i++){   f[i]=f[i-1]+f[i-2];}如果已知:f(n)=f(n-1)+f(n-2),f(0)=f(1)=1;求f(n)就可以写一个函数:
int f(int n){  if(n==0||n==1)     return 1;  else    return f[n-1]+f[n-2];}——————————————————————————————————————————————————————————————****************************迭代与递推的区别*******************************迭代和递推区别:可以这样理解:比如在下个循环中有:a=a+3;这个就是迭代。(自己感觉迭代差不多和循环一个意思了)递推如求阶乘,假设f(n)是n!;那么f(n+1)=(n+1)f(n); 这个就是递推 


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表