递归和非递归实现规律函数
2017-12-14 22:56
357 查看
1、问题
A(n) = n / (2 * n + 1)B1 = 2 + A1;
B2 = 2 + A1 * (2 + A2);
B3 = 2 + A1 * (2 + A2 * (2 + A3));
....以此类推,求B(n)
2、代码实现
#include <stdio.h> /** A(n) = n / (2 * n + 1) B1 = 2 + A1; B2 = 2 + A1 * (2 + A2); B3 = 2 + A1 * (2 + A2 * (2 + A3)); ....以此类推,求B() **/ float A(float n) { if (n < 0) return 0; float result = n / (2 * n + 1); return result; } //非递归实现 float B(float n) { if (n < 0) return 0; float sum = 1; for (int i = n; i >= 1; --i) { sum = sum * A(i) + 2; } return sum; } //递归实现 float recursion_B(float n) { if (n < 0) return 0; static float sum = 1; if (n == 0) return sum; else { sum = sum * A(n) + 2; recursion_B(n - 1); } } int main() { for (int i = 0; i < 20; i++) printf("B(%d) is %f\n", i, B(i)); printf("recursion_B(10) is %f\n", recursion_B(10)); }
3、运行结果
B(0) is 1.000000 B(1) is 2.333333 B(2) is 2.800000 B(3) is 2.990476 B(4) is 3.073016 B(5) is 3.109957 B(6) is 3.126829 B(7) is 3.134643 B(8) is 3.138300 B(9) is 3.140024 B(10) is 3.140842 B(11) is 3.141232 B(12) is 3.141419 B(13) is 3.141509 B(14) is 3.141552 B(15) is 3.141573 B(16) is 3.141583 B(17) is 3.141588 B(18) is 3.141591 B(19) is 3.141592 recursion_B(10) is 3.140842
相关文章推荐
- 斐波那契函数非递归实现(C++实现)
- 【C语言】编写一个函数实现n^k,使用递归实现。
- 用c语言实现 编写一个函数实现n^k,使用递归实现
- //4. 编写一个函数reverse_string(char * string)(递归实现) //实现:将参数字符串中的字符反向排列。 //要求:不能使用C函数库中的字符串操作函数。
- 编写一个函数实现n^k,使用递归实现
- 返回组成它的数字之和,函数实现n^k,使用递归实现
- Python3基础 用 函数递归实现 斐波那契数列
- 编写一个函数实现n^k,使用递归实现
- 编写一个函数实现n^k,使用递归实现
- php基于闭包实现函数的自调用(递归)实例分析
- php递归实现无限分类生成下拉列表的函数
- rever_string()函数(递归实现)即递归实现字符串反转
- JavaScript创建一个add()函数可实现,可变参数和递归调用
- 编写一个函数实现n^k,使用递归实现
- php递归实现无限分类生成下拉列表的函数
- 编写一个函数reverse_string(char * string)(递归实现)
- 链表插入元素的三种递归实现 -- 简单递归,数据累加器,函数累加器
- JavaScript消除与函数名紧密耦合的递归实现方法
- 使用递归实现DigitSum()函数,输入一个非负整数,返回组成它的数字之和
- 采用递归实现下面的函数:1^2+2^2+3^3=14