/**
*
*求1 2 3 5 8 按这个排列规则 一共100个 编写一个程序实现100个数之和
*sum = 1 + 2 + 3 + 5 + 8 +....
*方法二 ;采用递归思想的方法求解
*时间2001-10-06
*/
//才采用递归法来求解的类
public class RecursionSumDemo {
/**
*采用递归方法求的每项的值的方法
*
* a1=1, a2 = 2 ; 从第三项开始满足a(n) = a(n-1) + a(n-1);
*
*/
public long singleFac(int n){
//通过条件语句选择,把该序列分为三种情况,一是n==1;二是n==2;三是n>=3
if(n ==1 ){
return 1;
}else if(n == 2){
return 2 ;
}else{
// 从第三项开始满足a(n) = a(n-1) + a(n-1)开始采用递归求值;该求值另写一递归方法public long recursion(int n ,long b1, long b2,int begin);
// b1== 1,b2==2;递归结束条件n==3
return recursion(n,1,2,3);
}
}
//递归方法求的每项的值的方法 n--第几项数;b1 --(n-2)项的值;b2 --(n-1)项的值 ;该递归方法结束标志
public long recursion(int n ,long b1, long b2,int begin){
if (n == begin)
{
//n==3时为结束递归;此时 b1== 1,b2==2;
return b1 + b2;
}
else
//在不满足递归结束标志时,重新调用其本身,只是方法中的参数变了
return recursion(--n, b2, b1 + b2, begin );
}
public long getSum(int n ){
long sum = 0;
for(int i = n ; i > 0 ;i-- ){
sum += this.singleFac(i);
}
return sum;
}
//主方法,程序的入口方法
public static void main(String[] args) {
//实例化该类的对象
RecursionSumDemo recursionSumDemo = new RecursionSumDemo();
//设定变量n为项数
int n = 100;
//调用求前n项和的方法
long result = recursionSumDemo.getSum(n);
//输出求前n项和
System.out.println("前"+n+"项和为 = "+result);
}
}
![avatar](https://profile-avatar.csdnimg.cn/default.jpg!1)
ht_8602
- 粉丝: 1
- 资源: 2
最新资源
- 1111111111111111111112222222222222222
- 一个qtlog输出的工程,会按照分钟的频率输出log
- yolov10玩手机打电话检测训练权重+1万玩手机打电话检测数据集
- yolov9玩手机检测,训练好的权重,可以直接使用,并附有10000左右数据集
- piCorePlayer9.2.0-64Bit.img.xz
- 如何利用大模型技术在DT浏览器查空气质量
- C语言程序设计-学生成绩管理系统
- 最新UI界面发卡源码+多语言+多个主流钱包+搭建教程.zip
- KeymouseGo-简单好用的鼠标轨迹记录-循环运行脚本
- 2024全新版视频短剧SAAS系统/影视短剧小程序/短剧APP小程序源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)