递归算法

简介: /*编写一个递归函数完成以下公式的运算*/ //sum(n)=1-1/2+1/3-1/4......(其中n>0) #include using namespace std; //非递归算法 float FUN(int n) { int m=1,temp=1; float total=0.
/*编写一个递归函数完成以下公式的运算*/
//sum(n)=1-1/2+1/3-1/4......(其中n>0)
#include <iostream>
using namespace std;
//非递归算法
float FUN(int n)
{
	int m=1,temp=1;
	float total=0.0;
	while(m!=n+1)
	{
		total=total+1.0/m*temp;  //注意要写成1.0否则返回值是整型
		temp=temp*(-1);
		m++;
	}
	return total;
}

//递归算法
float Fun(int n)
{
	if(n==1)
		return 1;
	else if(n%2==0)
	{
		return Fun(n-1)-1.0/n;
	}
	else return Fun(n-1)+1.0/n;
}

int main()
{
    int a=5;
	cout<<Fun(a)<<endl;
	cout<<FUN(a)<<endl;
	return 0;
}


相关文章
|
5月前
|
存储 算法
递归算法
递归算法
39 0
|
16天前
|
算法
递归算法练习
递归算法练习
8 0
|
6月前
|
机器学习/深度学习 人工智能 算法
深入理解递归算法
概述 定义 计算机科学中,递归是一种解决计算问题的方法,其中解决方案取决于同一类问题的更小子集 In computer science, recursion is a method of solving a computational problem where the solution depends on solutions to smaller instances of the same problem. 比如单链表递归遍历的例子: void f(Node node) { if(node == null) { return; } print
18 0
|
2月前
|
存储 搜索推荐
【非递归版】快速排序算法(4)
【非递归版】快速排序算法(4)
18 0
|
9月前
递归和非递归分别实现求第n个斐波那契数
递归和非递归分别实现求第n个斐波那契数
42 0
|
10月前
非递归实现二叉树遍历
非递归实现二叉树遍历
35 0
|
11月前
|
存储 算法 JavaScript
算法系列-二叉树遍历(非递归实现)
在内卷潮流的席卷下,身为算法小白的我不得不问自己,是否得踏上征程,征服这座巍巍高山。 从零开始,终点不知何方,取决于自己可以坚持多久。 希望你可以和我一样,克服恐惧,哪怕毫无基础,哪怕天生愚钝,依然选择直面困难。
|
机器学习/深度学习 算法 前端开发
递归算法使用
通常递归算法可以将一个问题的重复调用进行分解,将其分解成一个多次调用,最终完成筛选或者需要的数据。比如我们常见的斐波那契数列就是这样的: 0、1、1、2、3、5、8、13、21、34这样的递归数据,可以通过此来总结出它的数学公式规律:F(n) = F(n-1) + F(n-2)的这个过程就是是借助上面的F(0)和F(1)的结果来进行递推的,这个过程在数学上是一个数列的递推公式,在高中我们学过的数列上。我还记得当时求解递推公式可以使用函数方程,而函数方程的思想想想其实是借助了微分方程逆推得到积分方程的过程,或者说是采用不动点法可以实现这一求解的过程。这个过程,在我看到高等数学的时候才明白,现在想
160 0
递归算法使用
汉诺塔(递归+ 非递归版)
汉诺塔问题(又称为河内塔问题),是一个大家熟知的问题。在A,B,C三根柱子上, 有n个不同大小的圆盘(假设半径分别为1-n吧),一开始他们都叠在我A上(如图所示),你的目标是在最少的合法移动步数内将所有盘子从A塔移动到C塔。 游戏中的每一步规则如下:
179 1
汉诺塔(递归+ 非递归版)