1.
一个楼梯有20级,每次走1级或是2级,从底走到顶一共有多少中走法?
算法:
设 n 是阶数,f(n) 是上 n 阶的不同走法数,则第一步可以走一阶或者是两阶, 那么这三种情况下剩余的阶数分别为 n-1、n-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;
}