有关递归的问题

来源:互联网 发布:情趣内衣淘宝卖家秀 编辑:程序博客网 时间:2024/06/06 19:53
1.一个楼梯有20级,每次走1级或是2级,从底走到顶一共有多少中走法?
    算法:
    设 n 是阶数,f(n) 是上 n 阶的不同走法数,则第一步可以走一阶或者是两阶,那么这三种情况下剩余的阶数分别为 n-1、n-2,

    所以 f(n) = f(n-1) + f(n-2)。

#include <iostream>using namespace std;void solution(int n){    int *temp;    temp = new int[n];    temp[1] = 1;    temp[2] = 2;    if(n==0 || n==1)    {        cout<<1<<endl;        return;    }    else    {      for(int i=3;i<=n;i++)      {          temp[i] = temp[i-1]+temp[i-2];      }    cout<<temp[n]<<endl;    return;    }}int main(){    int num;    cout<<"input the number:";    cin>>num;    solution(num);    return 0;}

2。计算小于num的所有质数

#include <iostream>using namespace std;void prime_number(int n){    int *prime;    prime = new int[1000];    int k=0;    for(int i=3;i<1000;i++)    {        for(int j=2;j<i;j++)        {            if(i%j == 0)                break;            else if((j==i-1) &&(i%j!=0))            {                prime[k++]=i;            }        }    }    if(n==1)    {        cout<<1<<endl;        return;    }    else if(n == 2)    {        cout<<1<<"\t"<<2<<endl;    }    else    {    for(int i=0;n>prime[i];i++)    {        cout<<prime[i]<<"\t";    }    delete[] prime;    return;    }}int main(){    int num;    cout<<"input the number:";    cin>>num;    prime_number(num);    return 0;}

3.不使用中间变量计算字符串长度

#include<iostream>using namespace std;int calculateStringLen(const char *str){    if(*str=='\0') return 0;    else    {        return calculateStringLen(++str)+1;    }}int main(){    char *str;    int strlen;    str = new char[100];    int i=0;    cin>>str;    strlen = calculateStringLen(str);   cout<<strlen<<endl;   return 0;}


0 0
原创粉丝点击