C++下的函数自我自我调用
第一种方法
1 #include <iostream> 2 using namespace std; 3 4 int rel_do(){ 5 6 int a; 7 cout<<"please input :"; 8 cin>>a; 9 if(a==1) { 10 cout<<a; 11 return 1; 12 } 13 else if(a==2) { 14 cout<<a; 15 return 1; 16 } 17
第二种方法
1 #include <iostream> 2 3 using namespace std; 4 5 int rel_do(){ 6 7 int a; 8 cout<<"please input :"; 9 cin>>a; 10 if(a==1) { 11 cout<<a; 12 return 1; 13 14 } 15 else if(a==2) { 16 cout<<a; 17 return 1; 18 19 } 20 else { 21 cout<<"input error!!!"<<endl; 22 rel_do(); 23 24 } 25 } 26 27 28 int main(){ 29 30 rel_do(); 31 32 return 0; 33 }
两种方法比较可以发现,rel_do()方法中,调用rel_do方法前加不加return都可以正常运行。
而在python中必须使用return。否则返回None,并且不报错
1 def real_do(): 2 do = input('1:确认 ' 3 '2:取消' ) 4 if do == '1': 5 return 1 6 elif do == '2': 7 return 2 8 else: 9 return real_do() 10 11 print(real_do())
在Java中,return可以放在rel_do()方法前面也可以放在函数最后返回1.
1 package javazero; 2 3 import java.util.Scanner; 4 5 public class Test { 6 7 public static void main(String[] args) { 8 // TODO Auto-generated method stub 9 rel_do(); 10 11 } 12 static int rel_do(){ 13 Scanner scanner = new Scanner(System.in); 14 System.out.println("please input :"); 15 int a; 16 a=scanner.nextInt(); 17 if(a==1) { 18 System.out.println(a); 19 return 1; 20 21 } 22 else if(a==2) { 23 System.out.println(a); 24 return 1; 25 26 } 27 else { 28 System.out.println("input error!!"); 29 rel_do(); 30 31 } 32 33 return 1; 34 } 35 36 }
1 package javazero; 2 3 import java.util.Scanner; 4 5 public class Test { 6 7 public static void main(String[] args) { 8 // TODO Auto-generated method stub 9 rel_do(); 10 11 } 12 static int rel_do(){ 13 Scanner scanner = new Scanner(System.in); 14 System.out.println("please input :"); 15 int a; 16 a=scanner.nextInt(); 17 if(a==1) { 18 System.out.println(a); 19 return 1; 20 21 } 22 else if(a==2) { 23 System.out.println(a); 24 return 1; 25 26 } 27 else { 28 System.out.println("input error!!"); 29 return rel_do(); 30 31 } 32 33 } 34 35 }