几个递归小题

来源:互联网 发布:淘宝物流几天自动收货 编辑:程序博客网 时间:2024/06/05 07:29

代码:

#include<iostream>using namespace std;int f(int n){if (n==1)  return 1;return n*f(n-1);}int main(){int n,i;double s=1;cin>>n;for (i=1;i<=n;i++){    s+= (double)1.0/f(i);     }     cout<<s<<endl;return 0;}


代码:

#include<iostream>#include<stdio.h>using namespace std;int f(int n){if (n==1)return 1;else if (n==2) return 2; else { return 3*f(n-1)-2*f(n-2); }}int main(){int n,i,s;cin>>n;for (i=1;i<=n;i++)   s+=f(i);printf("第%d项:%d",n,f(n));printf("之和:%d",s);return 0;}


4-4  递归求解双递推摆动数列 已知递推数列: 
    a(1)=1,a(2i)=a(i)+1,a(2i+1)=a(i)+a(i+1),(i为正整数)

试建立递归,求该数列的第

n(n<100000)

项与前

n

项的和。

试建立递归,求该数列的第

n(n<100000)

项与前

n

项的和。

试建立递归,求该数列的第n(n<100000)项与前n项的和。
代码:

#include<iostream>#include<stdio.h>using namespace std;int f(int n){if (n==1)return 1;else if (n%2==0)  return f(n/2)+1;else  return f((n+1)/2)+f((n+1)/2);}int main(){int n,i,s=0;cin>>n;for (i=1;i<=n;i++){s+=f(i); }printf("第%d项为:%d",n,f(n));printf("之和为:%d",s);return 0;}



0 0
原创粉丝点击