一解:递归算法。(按照一本通出题的要求是用递归算法)

#include<iostream>
using namespace std;
int jia(int N){
	if(N==1){
		return 1;
	}
	else{
		return N+jia(N-1);
	}
}
int main(){
	int N;
	cin>>N;
	cout<<jia(N);
	return 0;
}//By Gax
#include <iostream>
using namespace std;
int ans=0;
int a(int n){
    if(n){
        ans+=n;
        ans+=a(n-1);
    }else
        return ans;
}
int main() {
    int n;
    cin>>n;
    cout<<a(n);
	return 0;
}//By 10082009

二解:利用首尾逆序相加在除以2。(这不是递归,建议参考一解)

#include <iostream>
using namespace std;
int main() {
    int n;
    cin>>n;
    cout<<((1+n)*n)/2;
	return 0;
}//By 10082009

三解:利用循环。(这也不是递归,建议参考一解)

#include <iostream>
using namespace std;
int main() {
    int n,ans;
    cin>>n;
    while(n){
        ans+=n;
        n--;
    }
    cout<<ans;
	return 0;
}//By 10082009

发表评论

邮箱地址不会被公开。