ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

初识迭代

2020-02-04 18:05:12  阅读:188  来源: 互联网

标签:count num 迭代 int n% 初识 return 2n


简单递归

经典事例:斐波那契数列

#include<iostream>
using namespace std;

int f(int n){
int f(1)=1,f(2)=1;
f(n)=f(n-1)+f(n-2);

return f(n);
}
int main(){ cin>>n; cout<<f(n)<<endl;
return 0; }

所以,以上可知:
例:f(5)=f(4)+f(3);
f(4)=f(3)+f(2);
f(3)=f(2)+f(1);
==>f(5)=5;
其他类似也可以用数组代替,只要找到类似规律,即可以,例如:(洛谷的题P1028)
===》
首先要计算出当自然数(num)为0 , 1 的时候,种类(count)为 1
(找出的规律)则 num =2, count =2 , 即2,12;
num =3, count =2 , 即3,13;
num =4, count =4 , 即4,14,24,124;
num =5, count =4 , 即5,15,25,125;
num =6, count =6 , 即6,16,26,126,36,136;
num =7, count =7 , 即7,17,27,127,37,137;
.....
以上可知,f(2n) =f(2n+1),即f(2)和f(3)相等,f(4)和f(5)相等 ...
而f(2n) = f(2n-1) + f(2n/2); 即f(4)=f(3)+f(2)=2+2; f(6)=f(5)+f(3)=4+2=6;
所以可以得出结论:
if(n%2==0) f(n)=f(n-1)+f(n/2);
if(n%2==1) f(n)=f(n-1);
且初始条件(两个特殊值):f(0)=1,f(1)=1;
所以:
for(int n=2;i<=n;i++){
if(n%2==0) f(n)=f(n-1)+f(n/2);
if(n%2==1) f(n)=f(n-1);
}
f()即为f[]数组;

标签:count,num,迭代,int,n%,初识,return,2n
来源: https://www.cnblogs.com/zmz-zero/p/12260304.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有